A fix is available
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
PH48664
Reported component name
ENT COBOL FOR Z
Reported component ID
5655EC600
Reported release
640
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2022-08-12
Closed date
2022-08-18
Last modified date
2022-11-01
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Modules/Macros
IGY8RWTU IGYADXIT 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 IGYCJBLD IGYCJBLS IGYCJDM1 IGYCJDM2 IGYCJDM3 IGYCJDM4 IGYCJDM5 IGYCJDM6 IGYCJDMB IGYCJDMR IGYCJGEN 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 IGYISMKD IGYMSGE IGYMSGK IGYMSGT IGYMSGXT IGYQC IGYQCB IGYQCBE IGYQCBG IGYQSPLT IGYWACPT IGYWALOC IGYWAPLY IGYWC IGYWCL IGYWCLG IGYWDDEF IGYWDOPT IGYWIVP1 IGYWIVP2 IGYWRECV IGYWRWD IGYWSMPE IGYWUOPT IGYWZFS IGYZQEN6 IGYZQENU IGYZQJP6 IGYZQJPN
Fix information
Fixed component name
ENT COBOL FOR Z
Fixed component ID
5655EC600
Applicable component levels
R640 PSY UP
A
R641 PSY UP
A
R642 PSY UI82932
UP22/10/28 P F210
R64H PSY UP
A
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":"640","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]
Document Information
Modified date:
12 December 2023