IBM Support

PH45357: USERS OF ENTERPRISE COBOL COMPILING PROGRAMS WITH NUMCHECK(BIN)

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • No NUMCHECK(BIN) message is produced for
    the data item.  USERS AFFECTED:   Users of Enterprise COBOL
    compiling programs with NUMCHECK(BIN) where the compiler
    determines that an unsigned BINARY/COMP/COMP-4 data item has a
    value known at compile time that is larger than 32,767, if PIC
    9(1) through PIC 9(4), larger than 2,147,483,647, if PIC 9(5)
    through 9(9), or larger than 9,223,372,036,854,775,807, if PIC
    9(10) through PIC 9(18).
    
    
    Problem Summary:  If an unsigned binary value exceeds the
    maximum signed binary value that can fit in the underlying
    storage reserved for a data item, that means the leftmost bit is
    set. Binary values with the leftmost bit set, when treated as
    signed values, are negative. When the exact value of a data item
    being checked for validity was known at compile time, the
    compiler was incorrectly treating the unsigned values as the
    corresponding signed values and forcing them to positive before
    checking to see how many digits they had. But, a very large
    unsigned value with the leftmost bit set is a very small
    negative value when treated as signed. For example, for a PIC
    9(3), using 16 bits of storage, x'FFFF' is 65,535 when unsigned,
    but -1 as signed. When treated as signed and forced to positive,
    the value is 1, which fits within a 3-digit binary value, and so
    no message was generated.  Conclusion :   The compiler was fixed
    to properly check unsigned binary values against the picture
    clause of a data item when the exact value is known at compile
    time.
    
    KNOWN IMPACT:
    Moderate; some invalid data isn't getting properly checked by
    NUMCHECK.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of Enterprise COBOL compiling programs *
    *                  with NUMCHECK(BIN) where the compiler       *
    *                  determines that an unsigned                 *
    *                  BINARY/COMP/COMP-4 data item has a value    *
    *                  known at compile time that is larger than   *
    *                  32,767, if PIC 9(1) through PIC 9(4),       *
    *                  larger than 2,147,483,647, if PIC 9(5)      *
    *                  through 9(9), or larger than                *
    *                  9,223,372,036,854,775,807, if PIC 9(10)     *
    *                  through PIC 9(18).                          *
    ****************************************************************
    * PROBLEM DESCRIPTION: No NUMCHECK(BIN) message is produced    *
    *                      for the data item.                      *
    ****************************************************************
    * RECOMMENDATION: Apply the provided PTF                       *
    ****************************************************************
    If an unsigned binary value exceeds the maximum signed binary
    value that can fit in the underlying storage reserved for a
    data item, that means the leftmost bit is set. Binary values
    with the leftmost bit set, when treated as signed values, are
    negative. When the exact value of a data item being checked for
    validity was known at compile time, the compiler was incorrectly
     treating the unsigned values as the corresponding signed values
      and forcing them to positive before checking to see how many
      digits they had. But, a very large unsigned value with the
      leftmost bit set is a very small negative value when treated
      as signed. For example, for a PIC 9(3), using 16 bits of
      storage, x'FFFF' is 65,535 when unsigned, but -1 as signed.
      When treated as signed and forced to positive, the value is 1,
       which fits within a 3-digit binary value, and so no message
       was generated.
    

Problem conclusion

  • The compiler was fixed to properly check unsigned binary values
    against the picture clause of a data item when the exact value
    is known at compile time.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PH45357

  • 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

    2022-04-01

  • Closed date

    2022-07-22

  • Last modified date

    2022-08-12

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

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

    PH45894 PH48664

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 IGYCOPI  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
    IGYQCB   IGYQCBE  IGYQCBG  IGYQSPLT IGYTCARA IGYTSALE IGYZQEN6
    IGYZQENU IGYZQJP6 IGYZQJPN
    

Fix information

  • Fixed component name

    ENT COBOL FOR Z

  • Fixed component ID

    5655EC600

Applicable component levels

  • R630 PSY UI81630

       UP22/07/29 P F207

  • R631 PSY UI81631

       UP22/07/29 P F207

  • R632 PSY UI81632

       UP22/07/29 P F207

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