|
Figure 1 shows a sample unauthorized
logon pre-prompt exit.
Figure 1. Example
logon pre-prompt exitIKJEFLD TITLE 'TSO/E LOGON PRE-PROMPT INSTALLATION EXIT EXAMPLE'
IKJEFLD CSECT
TITLE 'TSO/E LOGON PRE-PROMPT INSTALLATION EXIT EXAMPLE PROLOGUE'
***********************************************************************
* *
* MODULE NAME - IKJEFLD *
* *
* CSECT NAME - IKJEFLD *
* *
* DESCRIPTIVE NAME - TSO/E INSTALLATION EXIT EXAMPLE *
* *
* FUNCTION - EXAMPLE FOR TSO/E LOGON PRE-PROMPT EXIT *
* *
* OPERATION - IKJEFLD PERFORMS THE FOLLOWING FUNCTION: *
* *
* 1 - SAVES CALLER'S REGISTERS IN CALLER'S SAVE AREA *
* 2 - ESTABLISHES ADDRESSABILITY TO MODULE IKJEFLD *
* 3 - SAVES PARAMETER POINTER (R1) *
* 4 - DOES A GETMAIN FOR PROGRAM'S SAVE AREA *
* 5 - CHAINS THE CALLER'S SAVE AREA AND THIS SAVE AREA *
* 6 - DOES A GETMAIN FOR PROGRAM'S WORK AREA *
* 7 - ESTABLISHES ADDRESSABILITY TO IKJEFLD'S WORK AREA *
* 8 - PROCESSES THE EXIT JCL STATEMENTS *
* 9 - DOES A FREEMAIN OF DYNAMIC WORK AREA *
* 10 - DOES A FREEMAIN OF DYNAMIC SAVE AREA *
* 11 - LOADS REGISTER 14 WITH RETURN ADDRESS *
* 12 - SETS THE RETURN CODE IN REGISTER 15 TO ZERO *
* 13 - LOADS REGISTERS R0 - R12 WITH CALLER'S ENTRY CONTENTS *
* FROM CALLER'S REGISTER SAVE AREA *
* 14 - RETURNS TO CALLER *
* *
* RECOVERY OPERATION - *
* *
* YOU MUST PROVIDE EXIT RECOVERY *
* *
* DEPENDENCIES - NONE *
* *
* *
TITLE 'IKJEFLD MODULE ATTRIBUTES'
* MODULE ATTRIBUTES - REENTRANT, *
* REFRESHABLE, *
* REUSABLE *
* *
***********************************************************************
TITLE 'REGISTER EQUATES'
***********************************************************************
* REGISTER EQUATES FOLLOW *
***********************************************************************
* REGISTER EQUATES AND USAGE *
* *
SPACE 3
R0 EQU 0 UNPREDICTABLE
R1 EQU 1 ON ENTRY R1 POINTS TO THE
* PARAMETER LIST. AT OTHER TIMES
* THE VALUE OF R1 IS UNPREDICTABLE
R2 EQU 2 UNPREDICTABLE
R3 EQU 3 UNPREDICTABLE
R4 EQU 4 UNPREDICTABLE
R5 EQU 5 UNPREDICTABLE
R6 EQU 6 UNPREDICTABLE
R7 EQU 7 UNPREDICTABLE
R8 EQU 8 UNPREDICTABLE
R9 EQU 9 UNPREDICTABLE
R10 EQU 10 OUTPUT BUFFER
R11 EQU 11 DATA AREA BASE REGISTER
R12 EQU 12 CODE AREA BASE REGISTER
R13 EQU 13 SAVE AREA BASE REGISTER
R14 EQU 14 RETURN ADDRESS
R15 EQU 15 RETURN CODE
TITLE 'ENTRY CODE'
***********************************************************************
* IKJEFLD ENTRY CODE *
* *
* DESCRIPTIVE NAME - STANDARD ENTRY LINKAGE CODE ROUTINE *
* *
* FUNCTION - ESTABLISHES STANDARD LINKAGE BETWEEN PROGRAMS *
* *
* OPERATION - *
* *
* 1). PERFORMS STANDARD LINKAGE BETWEEN INVOKER OF EXIT AND *
* EXIT *
* 2). OBTAINS A DYNAMIC SAVE AREA FOR THE EXIT AND *
* ESTABLISHES THIS AS THE SAVE AREA FOR THE EXIT *
* 3). OBTAINS EXIT'S DYNAMIC WORK AREA STORAGE AND *
* ESTABLISHES THIS AS THE WORK AREA FOR THE EXIT *
* *
***********************************************************************
IKJEFLD CSECT
ENTRY IKJEFLD
STM R14,R12,12(R13) SAVE CALLER'S REGISTERS
*
LR R12,R15
* LOAD R12 TO CONTAIN THE
* ENTRY POINT ADDRESS OF IKJEFLD
*
USING IKJEFLD,R12
* ESTABLISH R12 TO BE THE
* PROGRAM'S BASE CODE REGISTER
*
LR R2,R1
* SAVE THE ADDRESS OF THE PARAMETER
* LIST
*
GETMAIN RU,LV=LSAVEA
* OBTAIN A DYNAMIC SAVE AREA
* FOR IKJEFLD.
*
ST R13,4(,R1)
* SAVE THE ADDRESS OF THE INVOKER'S
* SAVE AREA INTO IKJEFLD'S DYNAMIC
* SAVE AREA
*
ST R1,8(,R13)
* SAVE THE ADDRESS OF IKJEFLD'S
* SAVE AREA INTO THE INVOKER'S
* SAVE AREA
*
LR R13,R1
* LOAD THE ADDRESS OF IKJEFLD'S
* DYNAMIC SAVE AREA INTO R13
* FOR POSSIBLE NEXT CALLER'S USE
*
USING SAVEA,R13
* ESTABLISH ADDRESSABILITY TO
* IKJEFLD'S SAVE AREA SO THAT THE
* LABELS WITHIN THE SAVE AREA
* CAN BE USED IF NEEDED
*
GETMAIN RU,LV=LWORKA
* OBTAIN THE DYNAMIC WORK AREA
* FOR IKJEFLD.
*
LR R11,R1
* LOAD THE ADDRESS OF THE DYNAMIC
* WORK AREA INTO R11 FOR IKJEFLD'S
* USE
*
USING WORKA,R11
* AND ESTABLISH ADDRESSABILITY
* TO THE DYNAMIC WORK AREA SO THAT
* THE LABELS WITHIN THE WORK AREA
* CAN BE ADDRESSED
*
ST R1,GMPTR
* SAVE THE ADDRESS OF IKJEFLD'S
* DYNAMIC SAVE AREA FOR LATER USE
*
ST R2,PLSTPTR
* SAVE THE ADDRESS OF THE PARAMETER
* LIST THAT THE INVOKER OF IKJEFLD
* PASSED IN FOR LATER USE
*
MVC WAID,WAIDC
* PUT INTO THE FIRST 8 POSITIONS OF
* THE IKJEFLD'S DYNAMIC WORK AREA
* THE CHARACTERS "WORKAREA" SO THAT
* IT CAN BE EASILY FOUND IN A DUMP
*
TITLE 'INITIALIZATION CODE'
***********************************************************************
* *
* INITIALIZATION ROUTINE *
* *
* DESCRIPTIVE NAME - INITIALIZATION CODE *
* *
* FUNCTION - INITIALIZES THE DYNAMIC STORAGE AREA *
* *
* OPERATION - *
* *
* *
* 1). ENSURES THE RETURN CODE FROM THE EXIT WILL BE ZERO *
* 2). LOADS R1 WITH THE ADDRESS OF THE ORIGINAL *
* PARAMETER LIST *
* *
***********************************************************************
SPACE 3
XC RETCODE,RETCODE
* INITIALIZE THE RETURN CODE.
* IKJEFLD WILL ALWAYS RETURN
* A RETURN CODE OF ZERO TO THE
* INVOKER.
*
LR R1,R2
* RESTORE THE ADDRESS OF THE
* ENTRY PARAMETER LIST
*
TITLE 'MAIN LINE CODE '
SPACE 3
PROCESS DS 0H
L R7,28(R1) INITIALIZE REG SEVEN TO
L R6,0(R7) POINT TO JCL DATA AREA
MVC 0(80,R6),OURJCL MOVE JOB CARD
MVC 80(80,R6),OUREXEC MOVE EXEC CARD
MVC 6(2,R7),OURCNT UPDATE CURRENT LENGTH
L R5,0(R1) INITIALIZE REG FIVE TO
L R5,0(R5) POINT TO CONTROL SWITCHES
OI 0(R5),X'02' TURN ON JCL SWITCH
TITLE 'TERMINATION CODE'
***********************************************************************
* *
* TERMINATION CODE *
* *
* DESCRIPTIVE NAME - CLEANUP AND TERMINATION CODE *
* *
* FUNCTION - RELEASES DYNAMIC STORAGE TO SYSTEM AND RETURNS TO *
* CALLER *
* *
* OPERATION - *
* *
* *
* 1). LOADS UP REGISTER 5 WITH THE RETURN CODE *
* 2). FREES THE DYNAMIC STORAGE WORK AREA *
* 3). RELOADS THE ADDRESS OF THE CALLER'S SAVE AREA *
* 4). FREES THE DYNAMIC STORAGE SAVE AREA *
* 5). RELOADS REGISTER 14 WITH THE RETURN ADDRESS *
* 6). RELOADS REGISTER 15 WITH THE RETURN CODE *
* 7). RELOADS REGISTERS 0 - 12 WITH ORIGINAL CONTENTS *
* 8). RETURNS TO CALLER VIA BSM *
* *
***********************************************************************
SPACE 3
L R5,RETCODE
* LOAD R5 TO CONTAIN THE RETURN
* CODE THAT IKJEFLD WILL RETURN
* TO THE INVOKER. THE RETURN
* CODE WILL ALWAYS BE ZERO
*
L R1,GMPTR
* LOAD R1 TO CONTAIN THE ADDRESS
* OF IKJEFLD'S DYNAMIC WORK AREA
*
FREEMAIN RU,LV=LWORKA,A=(1)
* ISSUE FREEMAIN TO RELEASE
* IKJEFLD'S DYNAMIC WORK AREA
* STORAGE BACK TO THE SYSTEM
*
RETURN DS 0H
*
LR R1,R13
* LOAD R1 TO CONTAIN THE ADDRESS
* OF IKJEFLD'S DYNAMIC SAVE AREA
*
L R13,4(,R13)
* LOAD R13 TO CONTAIN THE ADDRESS
* OF THE INVOKER'S SAVE AREA THAT
* WAS PASSED TO IKJEFLD ON ENTRY
*
FREEMAIN RU,LV=LSAVEA,A=(1)
* ISSUE FREEMAIN TO RELEASE
* IKJEFLD'S DYNAMIC SAVE AREA
STORAGE BACK TO THE SYSTEM*
*
L R14,12(,R13)
* LOAD R14 WITH THE ADDRESS OF THE
* NEXT INSTRUCTION THAT THE INVOKER
* WOULD HAVE EXECUTED IF IKJEFLD
* HAD NOT BEEN INVOKED
*
LR R15,R5
* LOAD R15 TO CONTAIN THE RETURN
* CODE IKJEFLD WILL PRESENT BACK
* TO THE INVOKER. THE RETURN CODE
* WILL ALWAYS BE ZERO
*
LM R0,R12,20(R13)
* RESTORE THE INVOKER'S REGISTERS
* BEFORE IKJEFLD RETURNS TO
* THE INVOKER
*
BSM 0,14
* RETURN TO THE INVOKER OF IKJEFLD
* AND RESET THE CALLER'S EXECUTION
* AND ADDRESSING MODE AS INVOKER
* CONTROL IS RESTORED
*
TITLE 'STATIC VARIABLES'
*
***********************************************************************
* DECLARES OF ALL CONSTANTS USED BY THIS MODULE FOLLOW *
***********************************************************************
*
SPACE 3
WAIDC DC C'WORKAREA'
OURJCL DC C'//IBMUSER JOB (D72598,9,OPR),IBM,MSGLEVEL=1,'
DC C'MSGCLASS=M,TIME=1439 '
OUREXEC DC C'//ST1 EXEC IKJACCNT '
DC C' '
OURCNT DC H'160' UPDATED CURRENT LENGTH
TITLE 'DYNAMIC SAVE AREA'
***********************************************************************
* IKJEFLD'S DYNAMIC SAVE AREA *
***********************************************************************
*
SPACE 3
SAVEAREA DSECT
SAVEA DS 0CL72 STANDARD SAVE AREA
DS F UNUSED
BPTR DS F BACKWARD SAVE AREA POINTER
FPTR DS F FORWARD SAVE AREA POINTER
REG14 DS F CONTENTS OF REGISTER 14
REG15 DS F CONTENTS OF REGISTER 15
REG0 DS F CONTENTS OF REGISTER 0
REG1 DS F CONTENTS OF REGISTER 1
REG2 DS F CONTENTS OF REGISTER 2
REG3 DS F CONTENTS OF REGISTER 3
REG4 DS F CONTENTS OF REGISTER 4
REG5 DS F CONTENTS OF REGISTER 5
REG6 DS F CONTENTS OF REGISTER 6
REG7 DS F CONTENTS OF REGISTER 7
REG8 DS F CONTENTS OF REGISTER 8
REG9 DS F CONTENTS OF REGISTER 9
REG10 DS F CONTENTS OF REGISTER 10
REG11 DS F CONTENTS OF REGISTER 11
REG12 DS F CONTENTS OF REGISTER 12
LSAVEA EQU *-SAVEAREA
TITLE 'DYNAMIC WORK AREA'
***********************************************************************
* DECLARES OF ALL DYNAMIC VARIABLES USED BY THIS MODULE FOLLOW *
***********************************************************************
*
SPACE 3
WORKA DSECT
WAID DS CL8 WORKAREA ID
GMPTR DS F ADDRESS OF GETMAIN
PLSTPTR DS F ADDRESS OF THE PARAMETER LIST
* THAT WAS PASSED INTO IKJEFLD
RETCODE DS F THE RETURN CODE HOLDER
LWORKA EQU *-WORKA LENGTH OF THIS WORK AREA
END IKJEFLD
|