Using the sample validation program

The SOURCE library includes a sample validation program AMD2PXIT, which captures user information and puts it in a transient data queue called USERINFO. You can modify this program or create a new one.

TITLE 'EXITSAMP  SAMPLE EXIT PROCESSING'
 PRINT NOGEN
 *–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––*
 * THIS SAMPLE EXIT PROGRAM IS CALLED FOR BOTH REQUEST AND RESULT      *
 * EXITS.  FOR THE REQUEST EXIT, THE REQUEST IS LOGGED TO A TEMPORARY  *
 * STORAGE QUEUE CALLED 'USERINFO'.  IN ADDITION, IF THE REQUEST NAME  *
 * IS 'PAYROLL', THE REQUEST IS IGNORED.  FOR THE RESULT EXIT, THE     *
 * SIZE OF REPORT1 IS CHECKED.                                         *
 *–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––*
 R0       EQU   0
 R1       EQU   1
 R2       EQU   2
 R3       EQU   3
 R4       EQU   4
 R5       EQU   5
 R6       EQU   6
 R7       EQU   7
 R8       EQU   8
 R9       EQU   9
 R10      EQU   10
 R11      EQU   11R12      EQU   12
 R13      EQU   13
 R14      EQU   14
 R15      EQU   15
 BLANK    EQU   X'40'
 EJECT
 *––––––––––––––––––*
 *  INITIALIZATION  *
 *––––––––––––––––––*
 EXITSAMP DFHEIENT CODEREG=(12),DATAREG=(13)
 USING EXITAREA,R8              ESTABLISH DSECT ADDRESSABILITY
 L     R8,DFHEICAP              GET ADDRESS OF EXITAREA
 *–––––––––––––––––––––––––––––––––––––*
 *  HANDLE A CALL TO THE REQUEST EXIT  *
 *–––––––––––––––––––––––––––––––––––––*
 REQUEST  CLC   XREASON,=CL8'REQUEST'    CALL TO REQUEST EXIT ?
 BNE   RESULT                   NO, BRANCH
 CLC   XREQNAME,=CL8'PAYROLL'   IS THIS A PAYROLL REQUEST ?
 BE    IGNORE                   YES, IGNORE THE REQUEST
 MVC   LOGREC,BLANKS            CLEAR LOG RECORD
 MVC   LOGREC+00(08),XDATE      DATE
 MVC   LOGREC+09(08),XTIME      TIME
 MVC   LOGREC+18(08),XUSERID    USERID
 MVC   LOGREC+27(08),XREQNAME   REQUEST NAME
 MVC   LOGREC+36(08),XREQFUNC   REQUEST FUNCTION
 EXEC  CICS WRITEQ TS QUEUE('USERINFO')                       +
 FROM(LOGREC) LENGTH(44)
 B     RETURN                   RETURN
 *––––––––––––––––––––––––––––––––––––*
 *  HANDLE A CALL TO THE RESULT EXIT  *
 *––––––––––––––––––––––––––––––––––––*
 RESULT   CLC   XRESNAME,=CL8'REPORT1'   IS THIS REPORT1 ?
 BNE   RETURN                   NO, BRANCH
 L     R3,XRESROWS              GET RESULT ROW COUNT ?
 C     R3,=F'3000'                 IS REPORT TOO LARGE ?
 BNH   RETURN                   NO, BRANCH
 MVC   XERRMSG,=CL70'REPORT TOO LARGE.  CHANGE WHERE CLAUSE'
 B     IGNORE
 *–––––––––––––––––––––––––––––––––*
 *  RETURN TO THE CALLING PROGRAM  *
 *–––––––––––––––––––––––––––––––––*
 IGNORE   MVC   XACTION,=CL8'IGNORE'     INDICATE IGNORE
 RETURN   DS    0H
 EXEC  CICS RETURN
 EJECT
 *–––––––––––––––––––––––––*
 *  MISCELLANEOUS STORAGE  *
 *–––––––––––––––––––––––––*
 BLANKS   DC    CL44' '
 LTORG
 DFHEISTG
 LOGREC   DS    CL44
 COPY  EXITAREA
 END