IBM Support

PH42041: PERFORMANCE OF PACKED-DECIMAL DIVIDE GIVING REMAINDER STATEMENTS MAY BE WORSE IN COBOL 6.3 THAN IN COBOL 6.2

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • PERFORMANCE OF PACKED-DECIMAL DIVIDE GIVING REMAINDER
    STATEMENTS MAY BE WORSE IN COBOL 6.3 THAN IN COBOL 6.2
    

Local fix

  • None. Apply PTF
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of Enterprise COBOL 6.3 compiling      *
    *                 programs at ARCH(12|13) that contain DIVIDE  *
    *                 GIVING REMAINDER statements where the        *
    *                 divisor is PIC 9(5) or smaller.              *
    ****************************************************************
    * PROBLEM DESCRIPTION: Performance is worse with COBOL 6.3     *
    *                      than COBOL 6.2.                         *
    ****************************************************************
    * RECOMMENDATION: Apply the provided PTF                       *
    ****************************************************************
    z14 introduces vector packed decimal instructions, allowing
    packed decimal operations to be done natively in registers.
    On z14/z15 (ARCH(12|13)), Enterprise COBOL was generating a
    divide with remainder sequence using a VDP instruction to do
    the division, and then a VMP and VSP to compute the remainder
    by multiplying the quotient by the divisor and subtracting that
    from the dividend. At lower ARCH levels, the same operation was
    done with the DP instruction; while that operated on the
    dividend and divisor in memory, instead of registers, it also
    computes both the remainder and quotient at once. Despite the
    extra steps, the vector packed instructions are faster than a
    DP except in the case where the divisor is 5 digits or less.
    However, COBOL 6.3 was always choosing to use a VDP regardless
    of the size of the divisor.
    

Problem conclusion

  • While the exact value of the divisor can't usually be known at
    compile time, and so a divisor with a large number of digits in
    the picture clause could still contain a small value, divisors
    with picture clauses of 5 or less must always contain a value
    that's 5 digits or less. The compiler was fixed to use a DP in
    cases where the divisor has a picture clause of 5 or fewer
    digits, as in those cases, it is always faster to use a DP than
    a VDP
    

Temporary fix

Comments

APAR Information

  • APAR number

    PH42041

  • 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-11-11

  • Closed date

    2021-11-18

  • Last modified date

    2021-12-01

  • 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 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
    IGYQSPLT IGYZQEN6 IGYZQENU IGYZQJP6 IGYZQJPN
    

Fix information

  • Fixed component name

    ENT COBOL FOR Z

  • Fixed component ID

    5655EC600

Applicable component levels

  • R630 PSY UI78163

       UP21/11/25 P F111

  • R631 PSY UI78164

       UP21/11/25 P F111

  • R632 PSY UI78165

       UP21/11/25 P F111

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