IBM Support

PI97623: TRUNC(BIN) WITH MOVE OF BINARY/COMP/COMP-4 DATA ITEM TO ALPHANUMERIC RECEIVER MAY HAVE INCORRECT OUTPUT

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Users of the Enterprise COBOL V5 or above compiler who are
    compiling and running programs with TRUNC(BIN) that also contain
    a MOVE statement with an unsigned, 32-bit sender with usage
    BINARY, COMP, or COMP-4, and an alphanumeric receiver may
    receive incorrect output.
    
    With TRUNC(BIN), the compiler is generating code that converts
    from 32-bit binary to packed directly, without going to 64-bit
    binary first. This is incorrect because it assumes that the
    COMP field won't ever have a value exceeding the picture clause,
    despite that being explicitly allowed by the use of TRUNC(BIN).
    
    The value of the alphanumeric receiver in the MOVE statement
    will be incorrect, because the sender was inadvertently treated
    as signed.
    

Local fix

  • Redefine the affected sender in the MOVE statement as usage
    COMP-5, instead of usage COMP or COMP-4.
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of the Enterprise COBOL V6.2 compiler  *
    *                 who are compiling and running programs with  *
    *                 TRUNC(BIN) that also contain a MOVE          *
    *                 statement with an unsigned, 32-bit sender    *
    *                 with usage BINARY, COMP, or COMP-4, and an   *
    *                 alphanumeric receiver.                       *
    ****************************************************************
    * PROBLEM DESCRIPTION: Incorrect output: The value of the      *
    *                      alphanumeric receiver in the MOVE       *
    *                      statement will be incorrect, because    *
    *                      the sender was inadvertently treated    *
    *                      as signed.                              *
    ****************************************************************
    * RECOMMENDATION: Apply the provided PTF.                      *
    ****************************************************************
    With TRUNC(BIN), the compiler is generating code that converts
    from 32-bit binary to packed directly, without going to 64-bit
    binary first. This is incorrect because it assumes that the
    COMP field won't ever have a value exceeding the picture clause
    despite that being explicitly allowed by the use of TRUNC(BIN).
    

Problem conclusion

  • The compiler has been modified to support the correct behavior
    for handling unsigned 32-bit COMP, compiled with TRUNC(BIN).
    The sender is now converted to 64-bit binary first, then
    converted to packed, rather than going from 32-bit binary to
    packed directly.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PI97623

  • 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

    2018-05-04

  • Closed date

    2018-05-28

  • Last modified date

    2018-06-04

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

    PI97449

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

Modules/Macros

  • IGY8RWTU IGYCASMB IGYCCBE  IGYCCCRT IGYCCICS IGYCCSRV IGYCDGEN
    IGYCDIAG IGYCDMAP IGYCDOPT 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
    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 UI56120

       UP18/06/01 P F805

  • R621 PSY UI56121

       UP18/06/01 P F805

  • R622 PSY UI56122

       UP18/06/01 P F805

  • R62H PSY UI56123

       UP18/06/01 P F805

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