MVS ASREXIT - SYMREC Authorization Exit

A CICS® program may call the first failure symptoms (FFS) component. This uses the MVS™ SYMREC macro to write symptom records to the MVS SYS1.LOGREC data set, in addition to, or instead of, a job log.

The SYMREC authorization exit, ASREXIT, must be in effect to allow CICS to use the SYMREC macro call, otherwise the call fails with return code 12, reason code 3868 (X'F1C').

When SYMREC is called by CICS, the ASREXIT routine issues a return code that permits the SYMREC to be successfully written.

The MVS sample exit programs ASREXT0 and ASREXT1, supplied in SYS1.SAMPLIB, are suitable for this purpose. For further information about these exits, see the z/OS MVS Installation Exits manual. The ASREXIT routine can determine if CICS is the caller by testing EPLPNAME for the value 'DFHSIP' except:

If you choose this method, you may wish to code your ASREXIT routine to allow for these exceptions.

An alternative method of coding the ASREXIT routine is in Figure 9. This method is not affected by the exceptions that are mentioned above.

Figure 9. An example of coding the ASREXIT routine.
         TITLE 'SYMREC SAMPLE EXIT'
         ASREPL
         PRINT NOGEN
         IHAPSA
         IKJTCB
         PRINT GEN
         DFHAFCD
         EJECT
ASREXIT  CSECT
ASREXIT  AMODE 31
ASREXIT  RMODE ANY
         USING *,R15                Temporary addressability
         MODID BR=YES
         DROP  R15
         STM   R14,R12,12(R13)      Save the caller's registers
         LR    R12,R15
         USING ASREXIT,R12
         L     R3,0(,R1)            Load the address of the EPL
         USING EPL,R3               Get addressability
         LA    R15,RCREJECT         Preset "reject" return code
         USING PSA,0
         L     R1,PSATOLD           Point at current TCB
         USING TCB,R1
         L     R1,TCBEXT2           Point at TCB extension
         DROP  R1
         USING TCBXTNT2,R1
         ICM   R1,B'1111',TCBCAUF   Point at AFCB; is there one?
         BZ    SETRC                No, branch
         DROP  R1
         USING DFHAFCB,R1
         CLC   AFIDENT,=C'AFCX'     Is it a genuine CICS AFCB?
         BNE   SETRC                No, branch
         CLI   AFVER,AFVER1         Is it at least Version 1?
         BL    SETRC                No, branch
         AH    R1,AFLENG            Add length of AFCB's DW
         DROP  R1                   table.
         USING AFTSTART-AFPFXLEN,R1 Allow for AFCB prefix length
         ICM   R1,B'1111',AFTAFCS   Point at AFCS; is there one?
         BZ    SETRC                No, branch
         DROP  R1
         LA    R15,RCWRITE          Set "write" return code
SETRC    DS    0H
         ST    R15,EPLRETC          Store return code
         DROP  R0
         DROP  R3
         DROP  R12
EXIT     LM    R14,R12,12(R13)      Restore caller's registers
         BR    R14                  Return
         LTORG *
R1       EQU   1                    Register 1
R3       EQU   3                    Register 3
R12      EQU   12                   Register 12
R13      EQU   13                   Register 13
R14      EQU   14                   Register 14
R15      EQU   15                   Register 15
RCREJECT EQU  X'0C'                 Return code C
RCWRITE  EQU  X'00'                 Return code 0
         END*  CONSTANTS
[[ Contents Previous Page | Next Page Index ]]