When running Benefits Administration, the process fails with the
following error:
ERROR
-----------------------
Object Code error : file '/app/psoft/HCMPRD/hr9/cblbin/PSPBATBL.gnt'
error code: 153, pc=0, call=1, seg=0
153 Subscript out of range (in PSPBATBL.cbl, line 4473)
ERROR
-----------------------
Object Code error : file '/app/psoft/HCMPRD/hr9/cblbin/PSPBATBL.gnt'
error code: 153, pc=0, call=1, seg=0
153 Subscript out of range (in PSPBATBL.cbl, line 4473)
Solution:
Error message 153 is generated when an array
size is exceeded.
Another cause may be related to missing records in
PS_BEN_PROG_PARTIC table.
To implement the solution, please take the
following steps:
1. In a test environment, in PSPBATBL.CBL increase
the size of the following array from 30 to 999 and change
WELIG-CURSOR-AVAILABLE value to 999 (3 values need to be increased:
WELIG-CURSOR-MAX, WELIG-CURSOR-AVAILABLE, and OCCURS for WELIG-CURSOR-DATA):
01 W-ELIG-CURSORS.
02 WELIG-CURSOR-COUNT PIC 999 COMP.
88 WELIG-CURSOR-MAX VALUE 999.
02 WELIG-CURSOR-AVAILABLE PIC 999 VALUE 999 COMP.
02 WELIG-CURSOR-USED PIC 999 COMP.
02 WELIG-CURSOR-LEFT PIC 999 COMP.
02 WELIG-CURSOR-DATA OCCURS 999
INDEXED BY
WELCS-IDX.
2. Recompile all COBOL programs.
3. Retest the issue.
4. If the issue is resolved, migrate the update as appropriate to the other environments.
01 W-ELIG-CURSORS.
02 WELIG-CURSOR-COUNT PIC 999 COMP.
88 WELIG-CURSOR-MAX VALUE 999.
02 WELIG-CURSOR-AVAILABLE PIC 999 VALUE 999 COMP.
02 WELIG-CURSOR-USED PIC 999 COMP.
02 WELIG-CURSOR-LEFT PIC 999 COMP.
02 WELIG-CURSOR-DATA OCCURS 999
INDEXED BY
WELCS-IDX.
2. Recompile all COBOL programs.
3. Retest the issue.
4. If the issue is resolved, migrate the update as appropriate to the other environments.
ADDITIONAL INFORMATION:
Q: How large the
array should actually be? We increased the array to 500 and put in a display
but we're not sure how to interpret the display.
A: In the context of Benefits Administration’s automatic event processing and on-demand event maintenance process, SQL cursor count is the number of unique SQL statements executed for each employee processed. SQL cursor count for each employee processed differs and can also vary by installation.
Total SQL cursor count for each employee processed is the cursor count during PSPBASCH (enrollment scheduling) plus the SQL cursor count of every COBOL module called by PSPBASCH, e.g. PSPBATBL, PSPPYMSG, etc. In section XB000 SET ELIG CURSORS of COBOL module PSPBATBL, variable WELIG CURSOR-USED OF W-ELIG-CURSORS is set to the total SQL cursor count for each employee processed. If it is feasible, the customer can place DISPLAY statements in this section to determine the actual total SQL cursor count for each employee processed and then set the OCCURS limit to one that is greater than the highest of the actual total SCL cursor counts. If this is not feasible, then increasing the OCCURS limit for W-ELIG-CURSORS to 500 should be fine too.
A: In the context of Benefits Administration’s automatic event processing and on-demand event maintenance process, SQL cursor count is the number of unique SQL statements executed for each employee processed. SQL cursor count for each employee processed differs and can also vary by installation.
Total SQL cursor count for each employee processed is the cursor count during PSPBASCH (enrollment scheduling) plus the SQL cursor count of every COBOL module called by PSPBASCH, e.g. PSPBATBL, PSPPYMSG, etc. In section XB000 SET ELIG CURSORS of COBOL module PSPBATBL, variable WELIG CURSOR-USED OF W-ELIG-CURSORS is set to the total SQL cursor count for each employee processed. If it is feasible, the customer can place DISPLAY statements in this section to determine the actual total SQL cursor count for each employee processed and then set the OCCURS limit to one that is greater than the highest of the actual total SCL cursor counts. If this is not feasible, then increasing the OCCURS limit for W-ELIG-CURSORS to 500 should be fine too.