*=====================================================================*
* ROUTE_REQUEST: Ship request to remote system *
* An entry has been found in the TS_Routing Table for this TS *
* Queue Name. The request is modified by adding a SYSID to the *
* command and renaming the queue if required. *
* *
* Registers: *
* R1 = Work register *
* R6 = Link Register *
* R7 = Address of current Queue name (Set on entry) *
* R8 = Command Parameter List (CLPS) *
* R9 = Address of table entry (Set on entry) *
* R12= Work register (Shared_storage) *
* *
* Logic: *
* Route_Request: *
* Call Getmain_Shared *
* If entry_name ¬= new_name then *
* Copy new_name into shared storage *
* Address the command plist *
* Update ADDR1 to point to address of the new TS QUEUE name *
* End If *
* Copy new_sysid into shared storage *
* Address the command plist *
* Update ADDR7 to point to the address of the new SYSID *
* Set the SYSID existence bit in the EID *
* Set the Hi-order bit in last address in CLPS *
* Return *
*=====================================================================*
ROUTE_REQUEST DS 0H
BAL R6,GETMAIN_SHARED GETMAIN SHARED storage
L R12,UEPTQTOK Fetch address of token
L R12,0(R12) Fetch Shared storage address
USING SHARED_STORAGE,R12 Address using R12
*
* Update the Queue Name in CLPS
USING TABLE_ENTRY,R9 R9 points to the table entry
CLC NEW_NAME,0(R7) Is the new_name=current_queue name?
BE ROUTE1 ..Yes No need to update Queue Name
MVC SHARED_NAME,NEW_NAME Copy QNAME into shared storage
L R8,UEPCLPS Address the CLPS..
USING TS_ADDR_LIST,R8 ..with Register 8
LA R1,SHARED_NAME Fetch address of the new QNAME
ST R1,TS_ADDR1 Store address in TS_ADDR1
DROP R8 Drop TS_ADDR_LIST
*
Figure 142. Example exit program for the XTSEREQ exit (part 9)
Appendix F. The example program for the XTSEREQ global user exit, DFH$XTSE 885