IBM Support

PH35436: COBOL 6.3 CPU TIME CONSUMED AT DIFFEREND OPT() AND ARCH() COMPILE OPTIONS LEVELS

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Customers may experience difference CPU times consumed when
    using different combinations of ARCH() and OPT() levels
    
    USERS AFFECTED: Users of Enterprise COBOL V6.x compiling
    
    programs at OPT(1|2) and ARCH(12) that use a USAGE DISPLAY data
    item as a receiver and then MOVE from the same data item to an
    element of a USAGE DISPLAY table, using the sender as an index
    into the receiver.
    
    PROBLEM DESCRIPTION:
    Performance is better at OPT(0) than OPT(1|2).
    
    WORKAROUND/CIRCUMVENTION: Compile at OPT(0).
    
    PROBLEM SUMMARY :
    
    For best performance, the compiler tries to move data directly
    to the receiver, but it must be sure it's safe to do so;
    otherwise, it can write to a temporaty storage and then move to
    the final receiver, generating an additional instruction.
    
    At OPT(1|2), the optimizer viewed the write to the USAGE DISPLAY
    data item and susequent read from it as connected statements,
    causing the compiler's internal state to reflect that it
    wouldn't be safe to move directly from the sender to the
    receiver. As this connection wasn't made at OPT(0), the
    generated code avoided using temporary storage at OPT(0), saving
    an instruction and performing faster.
    
    CONCLUSION :
    The compiler was fixed to update its internal state to indicate
    that it is safe to move from the sender directly to the receiver
    in this situation, avoiding the additional instruction to move
    from temporary storage to the receiver.
    

Local fix

  • Compile at OPT(0)
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of Enterprise COBOL V6.3               *
    *                 compiling programs at OPT(1|2) and ARCH(12)  *
    *                 that use a USAGE DISPLAY data item as a      *
    *                 receiver and then MOVE from the same data    *
    *                 item to an element of a USAGE DISPLAY        *
    *                 table, using the sender as an index into the *
    *                 receiver.                                    *
    ****************************************************************
    * PROBLEM DESCRIPTION: Performance is better at OPT(0) than    *
    *                      OPT(1|2).                               *
    ****************************************************************
    * RECOMMENDATION: Apply the provided PTF.                      *
    ****************************************************************
    For best performance, the compiler tries to move data directly
    to the receiver, but it must be sure it's safe to do so;
    otherwise, it can write to temporary storage and then move to
    the final receiver, generating an additional instruction.
    
    At OPT(1|2), the optimizer viewed the write to the USAGE
    DISPLAY data item and subsequent read from it as connected
    statements, causing the compiler's internal state to reflect
    that it wouldn't be safe to move directly from the sender to the
    receiver. As this connection wasn't made at OPT(0), the
    generated code avoided using temporary storage at OPT(0),
    saving an instruction and performing faster.
    

Problem conclusion

  • The compiler was fixed to update its internal state to indicate
    that it is safe to move from the sender directly to the
    receiver in this situation, avoiding the additional instruction
    to move from temporary storage to the receiver.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PH35436

  • Reported component name

    ENT COBOL FOR Z

  • Reported component ID

    5655EC600

  • Reported release

    630

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2021-03-17

  • Closed date

    2021-03-23

  • Last modified date

    2021-04-02

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

    PH34021

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

Modules/Macros

  • IGY8RWTU IGYCASMB IGYCCBE  IGYCCCRT IGYCCICS IGYCCSRV IGYCDGEN
    IGYCDIAG IGYCDMAP IGYCEN$0 IGYCEN$1 IGYCEN$2 IGYCEN$3 IGYCEN$4
    IGYCEN$5 IGYCEN$8 IGYCEN$D IGYCEN$R IGYCFGEN IGYCFREE IGYCINIT
    IGYCJA$0 IGYCJA$1 IGYCJA$2 IGYCJA$3 IGYCJA$4 IGYCJA$5 IGYCJA$8
    IGYCJA$D IGYCJA$R IGYCLIBR IGYCLSTR IGYCLVL0 IGYCLVL1 IGYCLVL2
    IGYCLVL3 IGYCLVL8 IGYCMALL IGYCOB2E IGYCOPI  IGYCOPT  IGYCOSCN
    IGYCPGEN IGYCRCTL IGYCRDPR IGYCRDSC IGYCREAL IGYCRWT  IGYCSCAN
    IGYCSIMD IGYCUE$0 IGYCUE$1 IGYCUE$2 IGYCUE$3 IGYCUE$4 IGYCUE$5
    IGYCUE$8 IGYCUE$D IGYCUE$R IGYCXREF IGYDRV   IGYEQCWI IGYMSGE
    IGYMSGK  IGYMSGT  IGYQCBE  IGYQSPLT IGYZQEN6 IGYZQENU IGYZQJP6
    IGYZQJPN
    

Fix information

  • Fixed component name

    ENT COBOL FOR Z

  • Fixed component ID

    5655EC600

Applicable component levels

  • R630 PSY UI74566

       UP21/03/30 P F103

  • R631 PSY UI74567

       UP21/03/30 P F103

  • R632 PSY UI74568

       UP21/03/30 P F103

  • R63H PSY UI74569

       UP21/03/30 P F103

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"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"630","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Document Information

Modified date:
12 December 2023