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