IBM Support

PI70646: IGZ0064S recursive call to active program after condition handler resume collapses the call stack

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • COBOL maintains a recursion counter for each compile unit that's
    incremented on entry and decremented on exit from a compile
    unit. If the compile unit is not defined as RECURSIVE, the
    recursion counter must be zero on entry, or the IGZ0064S
    condition is raised.
    
    During a condition handler resume, the call stack must be
    collapsed back to the state it was at the resume point, which
    means the usual exit from a compile unit on the call stack is
    not taken. The recursion counter is however decremented by
    COBOL's member event 11 (DSA exit routine) as the stack is
    collapsed, based on a flag in the PPA for the entry point used.
    
    That flag is erroneously not set for secondary entry points, so
    any compile units active on the call stack that were entered at
    secondary entry points will not have their recursion counters
    decremented during a resume. Subsequent calls to either the
    primary or any of the secondary entry points will fail with the
    IGZ0064S condition.
    
    For RECURSIVE compile units, the recursion counter might reach
    arbitrarily high values with sufficient resumes.
    

Local fix

  • Use primary entry points only.
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of Enterprise COBOL V5.2 running       *
    *                 programs that are called again after         *
    *                 recovery from condition, when the program    *
    *                 was initially entered at an alternate ENTRY  *
    *                 point.                                       *
    *                                                              *
    ****************************************************************
    * PROBLEM DESCRIPTION: Program ABEND with message IGZ0064S:    *
    *                      When an Enterprise COBOL V5.2 program   *
    *                      is entered at an alternate ENTRY point, *
    *                      and the program is exited abnormally,   *
    *                      the compiler generated counter used to  *
    *                      keep track of whether a program is      *
    *                      called recursively is not properly      *
    *                      decremented. Subsequently if the        *
    *                      program is entered again, for example   *
    *                      after the original condition that       *
    *                      caused the abnormal exit is handled     *
    *                      and execution resumed, the program may  *
    *                      fail with message IGZ0064S.             *
    *                                                              *
    ****************************************************************
    * RECOMMENDATION: Apply the provided PTF.                      *
    *                                                              *
    ****************************************************************
    The compiler was not setting the 'Exit DSA' bit in the LE PPA1
    'program flags' for an alternate entry point.
    

Problem conclusion

  • The compiler mas modified to set the 'Exit DSA' bit in the LE
    PPA1 'program flags' for an alternate entry point.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PI70646

  • Reported component name

    ENT COBOL FOR Z

  • Reported component ID

    5655W3200

  • Reported release

    520

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2016-10-13

  • Closed date

    2016-11-22

  • Last modified date

    2016-12-01

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

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

    PI72822

Modules/Macros

  •    IGYCRCTL
    

Fix information

  • Fixed component name

    ENT COBOL FOR Z

  • Fixed component ID

    5655W3200

Applicable component levels

  • R520 PSY UI42823

       UP16/11/26 P F611

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":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SS6SG3","label":"Enterprise COBOL for z\/OS"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"520","Edition":"","Line of Business":{"code":"LOB17","label":"Mainframe TPS"}},{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M","label":"APARs - z\/OS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"520","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
01 December 2016