A fix is available
APAR status
Closed as program error.
Error description
Customers may experience difference CPU times consumed when using different combinations of ARCH() and OPT() levels USERS AFFECTED: Users of Enterprise COBOL V6.x compiling programs at OPT(1|2) and ARCH(12) that use a USAGE DISPLAY data item as a receiver and then MOVE from the same data item to an element of a USAGE DISPLAY table, using the sender as an index into the receiver. PROBLEM DESCRIPTION: Performance is better at OPT(0) than OPT(1|2). WORKAROUND/CIRCUMVENTION: Compile at OPT(0). PROBLEM SUMMARY : For best performance, the compiler tries to move data directly to the receiver, but it must be sure it's safe to do so; otherwise, it can write to a temporaty storage and then move to the final receiver, generating an additional instruction. At OPT(1|2), the optimizer viewed the write to the USAGE DISPLAY data item and susequent read from it as connected statements, causing the compiler's internal state to reflect that it wouldn't be safe to move directly from the sender to the receiver. As this connection wasn't made at OPT(0), the generated code avoided using temporary storage at OPT(0), saving an instruction and performing faster. CONCLUSION : The compiler was fixed to update its internal state to indicate that it is safe to move from the sender directly to the receiver in this situation, avoiding the additional instruction to move from temporary storage to the receiver.
Local fix
Compile at OPT(0)
Problem summary
**************************************************************** * USERS AFFECTED: Users of Enterprise COBOL V6.x * * compiling programs at OPT(1|2) and ARCH(12) * * that use a USAGE DISPLAY data item as a * * receiver and then MOVE from the same data * * item to an element of a USAGE DISPLAY * * table, using the sender as an index into the * * receiver. * **************************************************************** * PROBLEM DESCRIPTION: Performance is better at OPT(0) than * * OPT(1|2). * **************************************************************** * RECOMMENDATION: Apply the provided PTF. * **************************************************************** For best performance, the compiler tries to move data directly to the receiver, but it must be sure it's safe to do so; otherwise, it can write to temporary storage and then move to the final receiver, generating an additional instruction. At OPT(1|2), the optimizer viewed the write to the USAGE DISPLAY data item and subsequent read from it as connected statements, causing the compiler's internal state to reflect that it wouldn't be safe to move directly from the sender to the receiver. As this connection wasn't made at OPT(0), the generated code avoided using temporary storage at OPT(0), saving an instruction and performing faster.
Problem conclusion
The compiler was fixed to update its internal state to indicate that it is safe to move from the sender directly to the receiver in this situation, avoiding the additional instruction to move from temporary storage to the receiver.
Temporary fix
Comments
APAR Information
APAR number
PH34021
Reported component name
LE ENT COBOL LI
Reported component ID
568819812
Reported release
620
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2021-02-01
Closed date
2021-02-18
Last modified date
2021-03-17
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 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 UI74024
UP21/02/23 P F102
R621 PSY UI74025
UP21/02/23 P F102
R622 PSY UI74026
UP21/02/23 P F102
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