IBM Support

PI79788: COBOL V5 AND V6 NOT PRESERVING GPR0 AND GPR1

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Assembler program calling COBOL V5+ program expects all general
    purpose registers to be restored upon return.  Gpr0 and gpr1
    were not, leadinbg to an exception in the assembler program.
    

Local fix

  • Don't use gpr0 or gpr1 as key registers in assembler
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of Enterprise COBOL V6.1 compiling     *
    *                 and running COBOL programs that are called   *
    *                 from assembler programs.                     *
    *                                                              *
    ****************************************************************
    * PROBLEM DESCRIPTION: Incorrect output: Following linkage     *
    *                      conventions, the compiler did not       *
    *                      generate instructions to restore        *
    *                      Register 0 or Register 1 before         *
    *                      returning control to the assembler      *
    *                      program, unlike Enterprise COBOL V4.2   *
    *                      and earlier compilers. If the           *
    *                      assembler program depended on R0 or R1  *
    *                      being preserved while calling a COBOL   *
    *                      program, the assembler program would    *
    *                      have an incorrect value in R0 or R1     *
    *                      upon return from the COBOL program.     *
    *                                                              *
    ****************************************************************
    * RECOMMENDATION: Apply the provided PTF.                      *
    *                                                              *
    ****************************************************************
    The compiler did not restore R0 or R1 when control was returned
    to a calling assembly program, which caused a difference in
    behavior when the COBOL program was migrated from COBOL V4 to
    COBOL V5/V6.
    

Problem conclusion

  • The compiler was fixed to generate instructions to restore R0
    and R1 when control was returned to a calling program, as long
    as the COBOL program wasn't returning a 64-bit binary value. In
    that case, R0 contains part of the return value.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PI79788

  • Reported component name

    ENT COBOL FOR Z

  • Reported component ID

    5655EC600

  • Reported release

    610

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2017-04-11

  • Closed date

    2017-04-25

  • Last modified date

    2017-05-05

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    PI81139

Modules/Macros

  •    IGYQCBE
    

Fix information

  • Fixed component name

    ENT COBOL FOR Z

  • Fixed component ID

    5655EC600

Applicable component levels

  • R610 PSY UI46711

       UP17/04/29 P F704

Fix is available

  • Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.

[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SS6SG3","label":"Enterprise COBOL for z\/OS"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"6.1","Edition":"","Line of Business":{"code":"LOB70","label":"Z TPS"}}]

Document Information

Modified date:
05 September 2024