A sample ICEIEXIT routine
Figure 1 and Figure 2 are
an example of a simple ICEIEXIT routine, which does the following:
- Sets the storage available to DFSORT for the weekly payroll jobs (jobname of 'PAYR*' and stepname of 'WEEKLY') to 24 MB.
- Ensures that the storage available to DFSORT for copy applications is not greater than 6 MB.
The ICEIEXIT routine in this example is provided as part of the sample job ICEIXREC in the SICESAMP library. See Using initialization and termination exits for details on how to install this sample routine.
ICEIEXIT CSECT
* DSECTS FOR SYSTEM CONTROL BLOCKS
CVT DSECT=YES
IKJTCB DSECT=YES
IEFTIOT1 ,
* DSECT FOR ICEIEXIT PARAMETER LISTS
ICEDIEX
* EQUATES
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R11 EQU 11
R12 EQU 12
R13 EQU 13
R14 EQU 14
R15 EQU 15
*
CURTCB EQU 4 CURRENT TCB OFFSET
ICEIEXIT CSECT
* PROLOGUE
USING *,R12 SET UP BASE REGISTER
SAVE (14,12) SAVE REGISTERS
LR R12,R15 LOAD BASE REGISTER
GETMAIN RC,LV=WORKLEN,BNDRY=DBLWD
LTR R15,R15 WAS STORAGE OBTAINED
BZ WORKOK IF YES, THEN CONTINUE
RETURN (14,12) ELSE, RETURN TO DFSORT
WORKOK LR R11,R1 SAVEAREA ADDRESS IN R11
USING WORKAREA,R11 MAKE WORKAREA ADDRESSABLE
ST R13,SAVEAREA+4 CHAIN BACKWARD
L R1,24(R13) LOAD ADDRESS OF PARAMETER LIST
LR R4,R13 SAVE ADDRESS OF CALLER'S SAVEAREA
LA R13,SAVEAREA LOAD ADDRESS OF SAVEAREA
ST R13,8(R4) CHAIN FORWARD
* ESTABLISH ADDRESSABILITY TO PARAMETER LISTS PASSED TO ICEIEXIT
USING ILMN,R1 ESTABLISH MAIN LIST ADDRESS
L R2,ILMEXA GET EXECUTION LIST ADDRESS
USING ILEXL,R2 AND ESTABLISH BASE
L R3,ILMINA GET INSTALLATION LIST ADDRESS
USING ILINL,R3 AND ESTABLISH BASE
DROP R1
* DETERMINE IF THIS IS ONE OF THE WEEKLY PAYROLL JOBS.
* IF SO, IT WILL HAVE A JOBNAME OF PAYR* AND A STEPNAME OF WEEKLY.
* NOTE THAT WEEKLY IS NOT A PROCEDURE STEP.
PAYRCK DS OH
L R1,16 GET CVT
USING CVT,R1 CVT DSECT BASE
L R1,CVTTCBP GET NEXT/CURRENT TCB POINTERS
L R1,CURTCB(,R1) GET CURRENT TCB
USING TCB,R1 TCB DSECT BASE
L R1,TCBTIO GET TIOT
USING TIOT1,R1 TIOT DSECT BASE
CLC TIOCNJOB(4),PAYR IF JOBNAME IS NOT PAYR*,
BNE CPYCK CHECK FOR A COPY APPLICATION
CLC TIOCSTEP(8),PAYST IF STEPNAME IS NOT WEEKLY,
BNE CPYCK CHECK FOR A COPY APPLICATION
* NOTE: IF THE STEP WAS A PROCEDURE STEP, THE STEP NAME WOULD BE
* AT TIOCSTEP+8.
DROP R1
* ONE OF THE WEEKLY PAYROLL JOBS - LET DFSORT USE UP TO
* 24 MEGABYTES OF STORAGE.
PAYRJOB DS 0H
MVC ILEXMXS,PAYRMAX TELL DFSORT THAT 24 MEGABYTES
* IS THE LIMIT
B GOBACK RETURN TO DFSORT WITH CHANGED
* STORAGE LIMIT
* DETERMINE IF THIS IS A COPY APPLICATION.
CPYCK DS OH
TM ILEXF2A,ILEXFCPY IF IT'S NOT A COPY APPLICATION,
BZ GOBACK DON'T CHANGE STORAGE LIMIT
* COPY APPLICATION - DO NOT LET DFSORT USE MORE THAN
* 6 MEGABYTES OF STORAGE.
CPYAPPL DS 0H
L R1,COPYMAX GET MAXIMUM STORAGE FOR COPY
CL R1,ILEXMXS IF NOT USING MORE THAN MAXIMUM,
BNL GOBACK KEEP CURRENT STORAGE LIMIT
ST R1,ILEXMXS TELL DFSORT THAT 6 MEGABYTES
* IS THE LIMIT
* EPILOGUE
GOBACK L R13,SAVEAREA+4 RESTORE SAVEAREA
LA R0,WORKLEN LOAD LENGTH OF WORKAREA
LR R1,R11 LOAD ADDRESS OF WORKAREA
FREEMAIN R,LV=(R0),A=(R1) FREE WORKAREA
RETURN (14,12) RETURN TO DFSORT
PAYR DC CLR'PAYR' PAYR* JOB NAME
PAYST DC CL8'WEEKLY' PAYROLL STEP NAME
PAYRMAX DC A(24*1024*1024) LET WEEKLY PAYROLL JOBS USE
* UP TO 24 MEGABYTES
COPYMAX DC A(6*1024*1024) LET COPY APPLICATIONS USE
* UP TO 6 MEGABYTES
WORKAREA DSECT WORK AREA
SAVEAREA DS 18F SAVE AREA
WORKLEN EQU *-WORKAREA
DROP R2,R3,R11,R12 DROP BASE REGISTERS
END