IBM Support

PH07068: ARCH(12) programs may exhibit poor performance if many decimal overflows in environments where overflow is enabled

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Code generated by the compiler at ARCH(12) (ie. targeting the
    z14) using the new vector packed decimal instructions is
    truncating numbers for assignment to smaller data items in a way
    that's generating more overflows than code used at lower ARCH()
    levels.
    
    If the COBOL code does a lot of such truncations and is running
    in an environment where overflow is enabled, for example in a
    enclave that also uses C/C++, the CPU cost of ignoring the
    overflows can lead to poorer performance.
    

Local fix

  • Compile at ARCH(11).
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of Enterprise COBOL V6.2 compiling     *
    *                 programs at ARCH(12) for use in an           *
    *                 application with other programming           *
    *                 languages, that move data from PACKED-       *
    *                 DECIMAL to USAGE DISPLAY data items where    *
    *                 the sender has more digits than the          *
    *                 receiver or that contain COMPUTE statements  *
    *                 with PACKED-DECIMAL and USAGE DISPLAY        *
    *                 senders and unsigned PACKED-DECIMAL or       *
    *                 USAGE-DISPLAY receivers where the senders or *
    *                 intermediate results have more digits than   *
    *                 the receiver.                                *
    ****************************************************************
    * PROBLEM DESCRIPTION: Performance may be lower than expected  *
    ****************************************************************
    * RECOMMENDATION: Apply the provided PTF.                      *
    ****************************************************************
    z14/ARCH(12) introduce instructions that can perform packed
    arithmetic in registers instead of in memory. One of these
    instructions, VPSOP, can be used to truncate. The optimizer was
    using this instruction to truncate earlier than was strictly
    necessary, because the optimizer is designed to keep
    intermediate results as small as possible. The new instruction
    causes an overflow exception when truncating. In a pure COBOL
    application, this is fine, because the hardware is set to
    suppress overflow exceptions. In a mixed-language application,
    other languages may instruct the hardware to allow the overflow
    instruction. This causes no behaviour change in COBOL, because
    the COBOL runtime detects that the exception happened in a
    COBOL program and suppresses the exception, but this extra work
    causes a performance degradation.
    

Problem conclusion

  • The compiler was fixed to avoid truncating with a VPSOP if the
    truncation could be done in a subsequent instruction without
    triggering an overflow exception.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PH07068

  • 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-01-09

  • Closed date

    2019-03-20

  • Last modified date

    2019-04-02

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

  • 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 IGYCOB2  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  IGYZQDRV
    IGYZQENU IGYZQJPN
    

Fix information

  • Fixed component name

    ENT COBOL FOR Z

  • Fixed component ID

    5655EC600

Applicable component levels

  • R620 PSY UI62019

       UP19/03/29 P F903

  • R621 PSY UI62020

       UP19/03/29 P F903

  • R622 PSY UI62021

       UP19/03/29 P F903

  • R62H PSY UI62022

       UP19/03/29 P F903

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