The pre-routing exit DFSYPRX0
You must first code a pre-routing exit DFSYPRX0. Parameters passed to this routine by IMS are documented in IMS/ESA Customization Guide.
This exit tests whether the message is intended for a known OTMA destination (in our example VCPEVCPE). If it is, the exit must check whether the transaction sending the message originated in OTMA. If so, it will already have an OTMA header, so you should exit from DFSYPRX0 with register 15 set to zero.
- If the transaction sending the message did not originate in OTMA, you must set the client name to be a valid OTMA client. This is the XCF member-name of the WebSphere MQ queue manager to which you want to send the message. The IMS/ESA Customization Guide tells you where to set this. We suggest you set your client name (in the OTMACON parameter of the CSQ6SYSP macro) to be the queue manager name. This is the default. You should then exit from DFSYPRX0 setting register 15 to 4.
- If the transaction sending the message originated in OTMA, and the destination is non-OTMA, you should set register 15 to 8 and exit.
- In all other cases, you should set register 15 to zero.
If you set the OTMA client name to one that is not known to IMS, your application CHNG or ISRT call returns an A1 status code.
For an IMS system communicating with more than one WebSphere MQ queue manager, you should repeat the logic above for each WebSphere MQ queue manager.
Sample assembler code to achieve the above is shown in Figure 38:
Figure 38. OTMA pre-routing exit assembler sampleTITLE 'DFSYPRX0: OTMA PRE-ROUTING USER EXIT' DFSYPRX0 CSECT DFSYPRX0 AMODE 31 DFSYPRX0 RMODE ANY * SAVE (14,12),,DFSYPRX0&SYSDATE&SYSTIME SPACE 2 LR R12,R15 MODULE ADDRESSABILITY USING DFSYPRX0,R12 * L R2,12(,R1) R2 -> OTMA PREROUTE PARMS * LA R3,48(,R2) R3 AT ORIGINAL OTMA CLIENT (IF ANY) CLC 0(16,R3),=XL16'00' OTMA ORIG? BNE OTMAIN YES, GO TO THAT CODE * NOOTMAIN DS 0H NOT OTMA INPUT LA R5,8(,R2) R5 IS AT THE DESTINATION NAME CLC 0(8,R5),=C'VCPEVCPE' IS IT THE OTMA UNSOLICITED DEST? BNE EXIT0 NO, NORMAL PROCESSING * L R4,80(,R2) R4 AT ADDR OF OTMA CLIENT MVC 0(16,R4),=CL16'VCPE' CLIENT OVERRIDE B EXIT4 AND EXIT * OTMAIN DS 0H OTMA INPUT LA R5,8(,R2) R5 IS AT THE DESTINATION NAME CLC 0(8,R5),=C'VCPEVCPE' IS IT THE OTMA UNSOLICITED DEST? BNE EXIT8 NO, NORMAL PROCESSING* EXIT0 DS 0H LA R15,0 RC = 0 B BYEBYE * EXIT4 DS 0H LA R15,4 RC = 4 B BYEBYE * EXIT8 DS 0H LA R15,8 RC = 8 B BYEBYE * BYEBYE DS 0H RETURN (14,12),,RC=(15) RETURN WITH RETURN CODE IN R15 SPACE 2 REQUATE SPACE 2 END