IBM Support

PH14172: The compiler generates incorrect code resulting in the comparison being incorrect.

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • USERS AFFECTED: Users of Enterprise COBOL Vx.x compiling
    programs with NORENT that compare data items in fairly close
    proximity in WORKING-STORAGE.
    
    PROBLEM DESCRIPTION: The compiler generates incorrect code
    when computing the address of the second item being compared,
    resulting in the comparison being incorrect.
    
    RECOMMENDATION TO CUSTOMER: Apply the provided PTF.
    
    PROBLEM SUMMARY: For items in close proximity, the address
    computations might involve the same address multiple times. In
    generating code for this address, the compiler can choose to
    reuse an existing register or use a new one. If the common
    address was referenced at least once in the computation of the
    first data item's address and more than once in the computation
    of the second data item's address, the compiler might generate
    an instruction that reused a register as part of the second data
    item's computation, before the first data item's computation was
    complete, causing the first data item's computation to be
    incorrect.
    
    CONCLUSION: The compiler was fixed to never reuse a register in
    computing an address when that register was possibly still in
    use by another address computation.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of Enterprise COBOL V6.2 compiling     *
    *                 programs with NORENT that compare data       *
    *                 items in fairly close proximity in           *
    *                 WORKING-STORAGE.                             *
    ****************************************************************
    * PROBLEM DESCRIPTION: The compiler generates incorrect code   *
    *                      when computing the address of the       *
    *                      second item being compared, resulting   *
    *                      in the comparison being incorrect.      *
    ****************************************************************
    * RECOMMENDATION: Apply the provided PTF.                      *
    ****************************************************************
    For items in close proximity, the address computations might
    involve the same address multiple times. In generating code for
    this address, the compiler can choose to reuse an existing
    register or use a new one. If the common address was referenced
    at least once in the computation of the first data item's
    address and more than once in the computation of the second
    data item's address, the compiler might generate an instruction
    that reused a register as part of the second data item's
    computation, before the first data item's computation was
    complete, causing the first data item's computation to be
    incorrect.
    

Problem conclusion

  • The compiler was fixed to never reuse a register in computing an
    address when that register was possibly still in use by another
    address computation.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PH14172

  • Reported component name

    ENT COBOL FOR Z

  • Reported component ID

    5655EC600

  • Reported release

    620

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2019-07-04

  • Closed date

    2019-07-13

  • Last modified date

    2019-08-01

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

    PH12015

  • 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 IGYCLIBH IGYCLIBO IGYCLIBR IGYCLSTR IGYCLVL0
    IGYCLVL1 IGYCLVL2 IGYCLVL3 IGYCLVL8 IGYCMALL 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  IGYZQDRV IGYZQENU IGYZQJPN
    

Fix information

  • Fixed component name

    ENT COBOL FOR Z

  • Fixed component ID

    5655EC600

Applicable component levels

  • R620 PSY UI64199

       UP19/07/19 P F907

  • R621 PSY UI64200

       UP19/07/19 P F907

  • R622 PSY UI64201

       UP19/07/19 P F907

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":"620","Edition":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Document Information

Modified date:
12 December 2023