10.3.2 OTMA宛先解決ユーザー・イグジット(DFSYDRU0)

次のリストは、IBM OTMA宛先解決ユーザー・イグジットのサンプルです。IBM DFSYDRU0ユーザー・イグジットを使用すると、宛先がOTMAクライアント、非OTMA LTERM、その他のタイプのOTMAクライアント、または無効なクライアントのいずれに該当するのかIMSが判別できるようになります。次のサンプルの中で太字になっている行は、IBM DFSYDRU0ユーザー・イグジットのうち変更が必要な部分です。

リストD-4 OTMA宛先解決ユーザー・イグジット(DFSYDRU0)

TITLE 'DFSYDRU0: OTMA DESTINATION RESOLUTION USER EXIT'
DFSYDRU0 CSECT
DFSYDRU0 AMODE 31
DFSYDRU0 RMODE ANY
********************************************************************
* *
* DESCRIPTION: OTMA DESTINATION RESOLUTION USER EXIT *
* *
***********************************************************@SCPYRT**
* *
* Licensed Materials - Property of IBM *
* *
* "Restricted Materials of IBM" *
* *
* 5655-158 (C) Copyright IBM Corp. 1991,1996 *
* *
***********************************************************@ECPYRT**
* *
* MODULE TYPE: DC *
* *
* PROCESSOR: ASSEMBLER H *
* *
* MODULE SIZE: SEE EXTERNAL SYMBOL DICTIONARY PRODUCED BY *
* ASSEMBLER *
* *
* ATTRIBUTE: REENTRANT *
* *
* ENTRY POINT: DFSYDRU0 *
* *
* ENTRY INTERFACES : *
* *
* STATUS: RELEASE 5.1 CHANGE LEVEL - 0 *
* *
* FUNCTION: THIS MODULE IS CALLED BY IMS WHEN AN APPLICATION *
* CALL (IE CHNG OR ISRT) RESULTS IN A SEARCH FOR *
* A DESTINATION, AND OTMA FIND-DEST PROCESSING *
* IS TO BE PERFORMED (AS DETERMINED BY DFSYPRX0 *
* PROCESSING). *
* DFSYDRU0 DETERMINES IF: *
* 1. DESTINATION IS AN OTMA CLIENT TPIPE *
* 2. DESTINATION IS A NON-OTMA LTERM *
* (LEGACY PROCESSING). *
* 3. DESTINATION IS IN A DIFFERENT OTMA CLIENT *
* 4. DESTINATION IS INVALID *
* *
* DEPENDENCY: IMS/ESA 5.1 *
* *
* MODULE TYPE: PROCEDURE *
* ATTRIBUTE: RE-ENTRANT *
* PROCESSOR: ASSEMBLER H *
* *
* REGISTERS: STANDARD ENTRY AND EXIT *
* *
* MODULE SIZE: SEE ASSEMBLER LISTING *
* *
* LINKAGE: BALR 14,15 *
* *
* *
********************************************************************
EJECT
***********************************************************************
* *
* INTERFACE: *
* *
* CONTENTS OF REGISTERS AT ENTRY: *
* R1 = ADDRESS OF STANDARD IMS USER EXIT PARMLIST *
* *
* STANDARD PARMLIST *
* --------- *
* | | *
* |---------| *
* | | *
* |---------| *
* | | DFSYPRX0 PARMLIST *
* +12 |---------| |---------------| *
* | |---->|INPUT LTERM | +0 *
* --------- |---------------| *
* |DEST NAME | +8 *
* |---------------| *
* |TRAN NAME | +16 *
* |---------------| *
* |FLAGS | +24 *
* |---------------| *
* |USER ID | +28 *
* |---------------| *
* |GROUP | +36 *
* |---------------| *
* |DEST CLIENT | +44 *
* |---------------| *
* |RESERVED | +60 *
* |---------------| *
* |INPUT CLIENT | +64 *
* |---------------| *
* |A(MCI) | +80 *
* |---------------| *
* |A(STATE DATA) | +84 *
* |---------------| *
* |A(USER DATA) | +88 *
* |---------------| *
* |RESERVED | +92 *
* |---------------| *
* |A(MEM OVERRIDE)| +96 *
* |---------------| *
* |FLAGS | +100 *
* |---------------| *
* *
* *
* R13 = SAVE AREA ADDRESS *
* R14 = RETURN ADDRESS *
* R15 = ENTRY POINT ADDRESS *
* *
* *
***********************************************************************
EJECT
***********************************************************************
* *
* CONTENTS OF OTMA PRE-ROUTING USER EXIT PARMLIST: *
* *
* +0 = 8-BYTE NAME OF LTERM/TPIPE WHICH *
* INVOKED THE CURRENT TRANSACTION *
* (LEFT-JUSTIFIED, PADDED WITH BLANKS) *
* THIS IS AN ENTRY PARAMETER ONLY. *
* *
* +8 = 8-BYTE DESTINATION NAME *
* (LEFT-JUSTIFIED, PADDED WITH BLANKS) *
* THIS IS AN ENTRY PARAMETER ONLY. *
* *
* +16 = 8-BYTE TRANSACTION NAME *
* (LEFT-JUSTIFIED, PADDED WITH BLANKS) *
* THIS IS AN ENTRY PARAMETER ONLY. *
* *
* +24 = 1-BYTE FLAG *
* X'80' - IF SET, INDICATES THAT AN INPUT *
* OTMA PREFIX EXISTS. THE MCI, *
* STATE DATA, AND USER DATA ARE *
* ACCESSIBLE IN THIS PARMLIST. *
* X'40' - IF SET, INDICATES THAT A DIFFERENT *
* OTMA CLIENT MAY BE SPECIFIED USING *
* RETURN CODE OF R15=8. (I.E. MEMBER *
* OVERRIDE IS ALLOWED FOR THIS CALL). *
* THIS IS AN ENTRY PARAMETER ONLY. *
* *
* +25 = SYNCRONIZATION LEVEL IF THE INPUT WAS *
* FROM AN OTMA CLIENT. *
* THIS IS AN ENTRY PARAMETER ONLY. *
* *
* +26 = 1-BYTE FLAG *
* X'80' - IF SET, TPIPE EXISTS FOR THE CLIENT *
* X'40' - IF SET, LTERM EXISTS IN IMS (LEGACY) *
* X'20' - IF SET, LU62 DESCRIPTOR EXISTS *
* X'10' - IF SET, ETO IS AVAILABLE *
* X'08' - IF SET, CLIENT IS ACTIVE *
* THIS IS AN ENTRY PARAMETER ONLY. *
* *
* +27 = 1-BYTE RESERVED *
* *
* +28 = 8-BYTE USERID *
* (LEFT-JUSTIFIED, PADDED WITH BLANKS) *
* THIS IS AN ENTRY PARAMETER ONLY. *
* *
* +36 = 8-BYTE GROUP ID *
* (LEFT-JUSTIFIED, PADDED WITH BLANKS) *
* THIS IS AN ENTRY PARAMETER ONLY. *
* *
* +44 = 16-BYTE DESTINATION CLIENT NAME *
* (LEFT-JUSTIFIED, PADDED WITH BLANKS) *
* THIS IS AN ENTRY PARAMETER ONLY. *
* *
* +60 = 4-BYTE RESERVED *
* *
* +64 = 16-BYTE NAME OF INPUT CLIENT MEMBER NAME *
* IF INPUT WAS FROM A CLIENT, BLANKS OTHERWISE. *
* (LEFT-JUSTIFIED, PADDED WITH BLANKS) *
* THIS IS AN ENTRY PARAMETER ONLY. *
* *
* +80 = ADDR(MESSAGE CONTROL INFORMATION), *
* AVAILABLE FROM INPUT OTMA MESSAGE PREFIX. *
* THIS IS AN ENTRY PARAMETER ONLY. *
* *
* +84 = ADDR(STATE DATA), *
* AVAILABLE FROM INPUT OTMA MESSAGE PREFIX. *
* THIS IS AN ENTRY PARAMETER ONLY. *
* *
* +88 = ADDR(USER DATA), *
* AVAILABLE FROM INPUT OTMA MESSAGE PREFIX. *
* *
* THIS AREA IS ALSO USED TO RETURN NEW OR *
* MODIFIED USER DATA, UP TO A MAXIMUM OF *
* 1024 BYTES. @PQ07683
* *
* THE FORMAT OF THE USER DATA IS: *
* 0-1 LENGTH OF FOLLOWING USER DATA, WHICH *
* INCLUDES THIS LENGTH FIELD *
* 2- USER DATA *
* *
* +92 = 4-BYTE RESERVED *
* *
* +96 = ADDR(OUTPUT PARAMETER LIST) *
* THE OUTPUT PARAMETER LIST IS USED TO *
* RETURN INFORMATION TO IMS. SEE UNDER *
* CONTENTS OF REGISTERS AT EXIT. *
* *
* *
* CONTENTS OF REGISTERS AT EXIT: *
* *
* R15 = RETURN CODE *
* *
* RETURN CODE CAN BE ONE OF THE FOLLOWINGS: *
* 0 : DESTINATION IS OTMA CLIENT TPIPE *
* 4 : DESTINATION IS NON-OTMA LTERM (LEGACY) *
* 8 : DESTINATION IS IN A DIFFERENT CLIENT. *
* THE CLIENT NAME MUST BE RETURNED IN *
* THE DFSYDRU0 PARMLIST. *
* 12: DESTINATION IS INVALID *
* *
* CONTENTS OF OTMA PRE-ROUTING USER EXIT PARMLIST: *
* *
* ALL FIELDS IN THE PARMLIST SHOULD REMAIN UNCHANGED. *
* OUTPUT INFORMATION IS RETURNED AS FOLLOWS: *
* *
* +96 = ADDR(OUTPUT PARAMETER LIST) *
* +00 = (16-BYTE MEMBER OVERRIDE) *
* THIS FIELD IS USED WHEN THE DESTINATION *
* IS IN A DIFFERENT OTMA CLIENT. *
* RETURN CODE 8 MUST BE SET. *
* (LEFT JUSTIFIED, PADDED WITH BLANKS) *
* *
* +16 = 1-BYTE OUTPUT FLAG FIELD *
* X'80' = IF SET, INDICATES THAT IF A *
* TPIPE NEEDS TO BE CREATED, IT *
* SHOULD BE A SYNC'D TPIPE. *
* THIS IS ONLY VALID WHEN *
* RETURN CODE = 0. *
* *
* +17 = 15-BYTE RESERVED *
* *
* *
* *
* REGISTER 13 IS THE ADDRESS OF SAVE AREA. *
* *
* NORMAL LINKAGE CONVENTIONS FOR REGISTER 13, 14 AND 15 *
* *
* *
* *
***********************************************************************
* @PQ00242
* @PQ00242
* @PQ00242
* @PQ00242
* @PQ00242
* @PQ00242
SAVE (14,12),,DFSYDRU0&SYSDATE&SYSTIME @PQ00242
SPACE 2 @PQ00242
LR R12,R15 MODULE ADDRESSABILITY @PQ00242
USING DFSYDRU0,R12 @PQ00242
* @PQ00242
*
L R2,12(,R1)
CLC 44(16,R2),MYCLIENT
BNE EXIT4
*
EXIT0 DS 0H
LA R15,0 RC = 0
B EXIT
*
EXIT4 DS 0H
LA R15,4
EXIT DS 0H
RETURN (14,12),,RC=(15) RETURN WITH RETURN CODE IN R15
SPACE 2
REQUATE
*
MYCLIENT DC CL16'BEAOTMA01' TEST CLIENT
*
END