A fix is available
APAR status
Closed as program error.
Error description
Code generated by the compiler at ARCH(12) (ie. targeting the z14) using the new vector packed decimal instructions is truncating numbers for assignment to smaller data items in a way that's generating more overflows than code used at lower ARCH() levels. If the COBOL code does a lot of such truncations and is running in an environment where overflow is enabled, for example in a enclave that also uses C/C++, the CPU cost of ignoring the overflows can lead to poorer performance.
Local fix
Compile at ARCH(11).
Problem summary
**************************************************************** * USERS AFFECTED: Users of Enterprise COBOL V6.2 compiling * * programs at ARCH(12) for use in an * * application with other programming * * languages, that move data from PACKED- * * DECIMAL to USAGE DISPLAY data items where * * the sender has more digits than the * * receiver or that contain COMPUTE statements * * with PACKED-DECIMAL and USAGE DISPLAY * * senders and unsigned PACKED-DECIMAL or * * USAGE-DISPLAY receivers where the senders or * * intermediate results have more digits than * * the receiver. * **************************************************************** * PROBLEM DESCRIPTION: Performance may be lower than expected * **************************************************************** * RECOMMENDATION: Apply the provided PTF. * **************************************************************** z14/ARCH(12) introduce instructions that can perform packed arithmetic in registers instead of in memory. One of these instructions, VPSOP, can be used to truncate. The optimizer was using this instruction to truncate earlier than was strictly necessary, because the optimizer is designed to keep intermediate results as small as possible. The new instruction causes an overflow exception when truncating. In a pure COBOL application, this is fine, because the hardware is set to suppress overflow exceptions. In a mixed-language application, other languages may instruct the hardware to allow the overflow instruction. This causes no behaviour change in COBOL, because the COBOL runtime detects that the exception happened in a COBOL program and suppresses the exception, but this extra work causes a performance degradation.
Problem conclusion
The compiler was fixed to avoid truncating with a VPSOP if the truncation could be done in a subsequent instruction without triggering an overflow exception.
Temporary fix
Comments
APAR Information
APAR number
PH07068
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
2019-01-09
Closed date
2019-03-20
Last modified date
2019-04-02
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 IGYCLIBH IGYCLIBO IGYCLIBR IGYCLSTR IGYCLVL0 IGYCLVL1 IGYCLVL2 IGYCLVL3 IGYCLVL8 IGYCMALL IGYCOB2 IGYCOB2E 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 UI62019
UP19/03/29 P F903
R621 PSY UI62020
UP19/03/29 P F903
R622 PSY UI62021
UP19/03/29 P F903
R62H PSY UI62022
UP19/03/29 P F903
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