* Registers: *
* R1 = UEPAR plist (set on entry) *
* = Work register *
* R2 = UEPAR plist *
* R3 = Program base register (set by DFHEIENT) *
* R6 = Linkage register *
* R11= EIB register *
* R13= EISTG register (set by DFHEIENT) *
* R15= Work register *
* User Exit Return Code *
* *
* Logic: *
* DFH$XTSE: *
* Exec Interface Entry *
* Address DFHUEPAR plist *
* Set OK Return Code *
* Address the EIB *
* Trace entry *
* Select Exitid *
* When(XTSEREQ) then call TS_Request *
* When(XTSEREQC) then call TS_Request_Complete *
* Otherwise call Error(Invalid_Exit) *
* End Select *
* Trace exit *
* Set Exit return code *
* Return *
***********************************************************************
DFH$XTSE DFHEIENT
DFH$XTSE AMODE 31
DFH$XTSE RMODE ANY
LR R2,R1 DFHUEPAR plist provided by caller
USING DFHUEPAR,R2 Use R2 to address UEPAR PLIST
*
LA R15,UERCNORM Set OK Response
ST R15,RETCODE in working storage
*
EXEC CICS ADDRESS EIB(R11)
USING DFHEIBLK,R11
*
BAL R6,TRACE_ENTRY Trace program entry
*
L R1,UEPEXN Address of the 1 byte Exit Id
CLI 0(R1),XTSEREQ Is this XTSEREQ exit?
BE TS_REQUEST ..Yes Branch to routine
CLI 0(R1),XTSEREQC Is this XTSEREQC exit?
BE TS_REQUEST_COMPLETE .. Yes Branch to routine
B ERROR1 Otherwise Branch to error routine
*
RETURN DS 0H Return point
BAL R6,TRACE_EXIT Trace program exit
*
L R15,RETCODE Fetch return code
DFHEIRET RCREG=15 Return to CICS
EJECT ,
Figure 137. Example exit program for the XTSEREQ exit (part 4)
880 Customization Guide