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.

Figure 1. Sample ICEIEXIT Routine (1 of 2)
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.
Figure 2. Sample ICEIEXIT Routine (2 of 2)
         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