*=====================================================================*
* TS_REQUEST - Invoked at XTSEREQ exit point *
* Determine the TS Queue Name and scan the TS_Routing_Table for *
* a match. If an entry exists in the table, then check the action *
* field and call the ROUTE_REQUEST or LOCAL_REQUEST routines. *
* *
* The TS_Routing_Table is made up of entries with the following *
* structure: *
* *
* TABLE_ENTRY: *
* ---------------------------------------------------------- *
* | Entry_Name | New_Name | QOR_Sysid | Action | *filler* | *
* | Char 8 | Char 8 | Char 4 | Bin 1 | Char 3 | *
* ---------------------------------------------------------- *
* Last Entry is indicated by special TS_Queue Name *
* *
* Registers: *
* R1 = Work register *
* R7 = Set to the TS Queue Name *
* R8 = Command Parameter List (CLPS) *
* R9 = Points to the next entry in the TS_Routing_Table *
* R15= Work register *
* *
* Logic: *
* TS_Request: *
* If called recursively then *
* call Error(Recursive_Call1) *
* Else *
* If the Command GROUP code is not a TS request then *
* call Error(Invalid_Group_Code1) *
* Else *
* Clear the UEPTQTOK *
* Address the Command Plist UEPCLPS *
* Fetch tsq_name *
* Fetch start of TS_Routing_Table *
* Check_Next_Entry: *
* Get the next table entry *
* Select (entry_name) *
* When (last_entry) call Entry_Not_Found *
* When (tsq_name) *
* Select (entry_action) *
* When (Route) call Route_Request *
* When (Local) call Local_Request *
* Otherwise call Error(Invalid_Table_Action) *
* End Select *
* Otherwise *
* Goto Check_Next_Entry *
* End Select *
* End If *
* End If *
* Return *
Figure 138. Example exit program for the XTSEREQ exit (part 5)
Appendix F. The example program for the XTSEREQ global user exit, DFH$XTSE 881