z/OS TSO/E Customization
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Example logon pre-prompt exit IKJEFLD

z/OS TSO/E Customization
SA32-0976-00

Figure 1 shows a sample unauthorized logon pre-prompt exit.

Figure 1. Example logon pre-prompt exit
IKJEFLD 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

Go to the previous page




Copyright IBM Corporation 1990, 2014