When developing and testing installation exits, it is probably
easier to keep each exit routine in its own source and load module.
In this manner, the routines can be assembled, loaded, and tested
independently. If there are many routines, you may want to eventually
combine them into a single source and load module for easier maintenance
procedures.
Figure 1 shows three exit routines in
a single module with a general structure that you may want to follow.
Figure 1. Example of Providing Multiple Exits within a Single Load ModuleXITS TITLE 'SAMPLE JES2 INSTALLATION EXITS - PREAMBLE'
* *
* COMMENT BLOCK FOR MODULE GOES HERE ..... *
* *
*****************************************************************
COPY $HASPGBL COPY HASP GLOBALS
HASPUEX $MODULE ENVIRON=JES2, REQ'D BY $BUFFER C
RPL, C
$BUFFER, C
$CAT, C
$DCT, C
$HASPEQU, REQUIRED FOR REG CONVENTIONS C
$HCT, REQ'D BY $SAVE,$RETURN,ETC. C
$JCT, C
$JOE, REQ'D TO GET SYSOUT CLASS C
$JQE, C
$MIT, REQ'D BY HCT C
$PCE, REQ'D BY HCT C
$PDDB, REQ'D BY $PPPWORK C
$PPPWORK, REQ'D TO FIND JOE C
$RDRWORK
*****************************************************************
* *
* ADDITIONAL MAPPING MACROS GO HERE *
* *
*****************************************************************
TITLE 'SAMPLE SEPARATOR PAGE EXIT - ROUTINE 1'
*****************************************************************
* *
* COMMENT BLOCK FOR EXIT 1 GOES HERE *
* *
*****************************************************************
XIT1RTN1 $ENTRY BASE=R12 EXIT ROUTINE ENTRY POINT
$SAVE
LR R12,R15 LOAD BASE REGISTER
*****************************************************************
* *
* INSTALLATION EXIT CODE FOR EXIT 1 ROUTINE 1 GOES HERE *
* *
*****************************************************************
LA R15,8 SET RETURN CODE
RETURN1 $RETURN RC=(R15) RETURN TO HASPPRPU
TITLE 'SAMPLE SEPARATOR PAGE EXIT - ROUTINE 2'
XIT1RTN2 $ENTRY BASE=R12 EXIT ROUTINE ENTRY POINT
$SAVE
LR R12,R15 LOAD BASE REGISTER
TITLE 'SAMPLE SEPARATOR PAGE EXIT - ROUTINE 1'
*****************************************************************
* *
* INSTALLATION EXIT CODE FOR EXIT 1 ROUTINE 2 GOES HERE *
* *
*****************************************************************
LA R15,8 SET RETURN CODE
RETURN2 $RETURN RC=(R15) RETURN TO HASPPRPU
LTORG
TITLE 'JOB CARD SCAN EXIT'
*****************************************************************
* *
* COMMENT BLOCK FOR EXIT 2 ROUTINE 1 GOES HERE *
* *
*****************************************************************
XIT2RTN1 $ENTRY BASE=R12 EXIT ROUTINE ENTRY POINT
$SAVE
LR R12,R15 LOAD BASE REGISTER
*****************************************************************
* *
* INSTALLATION EXIT CODE FOR EXIT 2 ROUTINE 1 GOES HERE *
* *
*****************************************************************
LA R15,8 SET RETURN CODE
$RETURN RC=(R15) RETURN TO HASPRDR
LTORG
$MODEND
END
The following JES2 initialization statements can be used to load
and associate exit points 1 and 2 with the above routines.
LOADMOD(HASPUEX) STORAGE=PVT
EXIT(1) ROUTINE=(XIT1RTN1,XIT1RTN2),STATUS=ENABLED,TRACE=NO
EXIT(2) ROUTINE=XIT2RTN1,STATUS=ENABLED,TRACE=NO