A fix is available
APAR status
Closed as program error.
Error description
PERFORMANCE OF PACKED-DECIMAL DIVIDE GIVING REMAINDER STATEMENTS MAY BE WORSE IN COBOL 6.3 THAN IN COBOL 6.2
Local fix
None. Apply PTF
Problem summary
**************************************************************** * USERS AFFECTED: Users of Enterprise COBOL 6.3 compiling * * programs at ARCH(12|13) that contain DIVIDE * * GIVING REMAINDER statements where the * * divisor is PIC 9(5) or smaller. * **************************************************************** * PROBLEM DESCRIPTION: Performance is worse with COBOL 6.3 * * than COBOL 6.2. * **************************************************************** * RECOMMENDATION: Apply the provided PTF * **************************************************************** z14 introduces vector packed decimal instructions, allowing packed decimal operations to be done natively in registers. On z14/z15 (ARCH(12|13)), Enterprise COBOL was generating a divide with remainder sequence using a VDP instruction to do the division, and then a VMP and VSP to compute the remainder by multiplying the quotient by the divisor and subtracting that from the dividend. At lower ARCH levels, the same operation was done with the DP instruction; while that operated on the dividend and divisor in memory, instead of registers, it also computes both the remainder and quotient at once. Despite the extra steps, the vector packed instructions are faster than a DP except in the case where the divisor is 5 digits or less. However, COBOL 6.3 was always choosing to use a VDP regardless of the size of the divisor.
Problem conclusion
While the exact value of the divisor can't usually be known at compile time, and so a divisor with a large number of digits in the picture clause could still contain a small value, divisors with picture clauses of 5 or less must always contain a value that's 5 digits or less. The compiler was fixed to use a DP in cases where the divisor has a picture clause of 5 or fewer digits, as in those cases, it is always faster to use a DP than a VDP
Temporary fix
Comments
APAR Information
APAR number
PH42041
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
2021-11-11
Closed date
2021-11-18
Last modified date
2021-12-01
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 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 IGYQSPLT IGYZQEN6 IGYZQENU IGYZQJP6 IGYZQJPN
Fix information
Fixed component name
ENT COBOL FOR Z
Fixed component ID
5655EC600
Applicable component levels
R630 PSY UI78163
UP21/11/25 P F111
R631 PSY UI78164
UP21/11/25 P F111
R632 PSY UI78165
UP21/11/25 P F111
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