IBM Support

PH45894: 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

    PH45894

  • 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

    2022-04-25

  • Closed date

    2022-04-25

  • Last modified date

    2022-05-03

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

    PH45357

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

    UI80303 UI80304 UI80305

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 UI80303

       UP22/04/29 P F204

  • R621 PSY UI80304

       UP22/04/29 P F204

  • R622 PSY UI80305

       UP22/04/29 P F204

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

Document Information

Modified date:
12 December 2023