Existing unchanged IMS transactions that run as Message Processing Programs (MPPs) or fast path programs (IFPs) can be called using the WebSphere® Application Server for z/OS® optimized local adapters over Open Transaction Manager Access Callable Interface (OTMA C/I) support. This support is provided by a new set of native modules introduced with optimized local adapters that use the IMS OTMA C/I.
Prior to the support for multi-segment messages in V8, request and response messages must be single segment, with maximum send and receive segment size no larger than 32760 bytes, including the message header.
<----------------- HEADER ----------------> <------ DATA ------> LL + ZZ + IMS Transaction Name + Message request data (2 bytes) | (2 bytes) | (8 bytes) | (up to 32744 bytes)
The Transaction Name in the message is used for the call to OTMA C/I and must be a transaction defined and reachable in either an IMS MPR or fast path dependent region.
<----- HEADER -----> <------------------ DATA -----------------> LLLL + Message response data (4 bytes) | (up to 32756 bytes)The CICS/IMS Java Data Binding wizard in Rational® Application Developer is used to create helper classes with setter and getter methods that can be used to handle the mapping of data to and from both Java objects and binary forms. This mapping of data applies for both messages sent to IMS from WebSphere Application Server and response data.
IMS multi-segment messages supports request and response messages to be larger than the prior 32744 bytes for request messages and 32756 for response messages. However, a single segment can be no larger than 32768 bytes, including the message header.
OTMAMaxSegments represents the largest number of segments supported for sending and receiving IMS messages on the current connection. If a value is not specified, the default is 1.
OTMAMaxRecvSize represents the largest possible message that can be returned from IMS using the WebSphere optimized local adapters over OTMA support. If a value is not specified, the default is 32768.
For multiple-segment messages, the default is LLZZ for requests from WebSphere optimized local adapters to IMS. The default LLLL+message data for responses from IMS to WebSphere Application Server remains the same.
There are methods provided with this support that allow for changing these defaults. The setOTMARequestLLZZ() and setOTMARequestLLLL() methods provide the ability to set the length prefix style for message requests from WebSphere Application Server to IMS. The methods, setOTMAResponseLLZZ() and setOTMAResponseLLLL(), provide the ability to set the message prefix style to LLZZ or LLLL for message responses. The following example is the message format expected for calls to IMS from applications in WebSphere Application Server.
<----------------- HEADER ------------------> LL + ZZ + IMS Transaction Name + (2 bytes) | (2 bytes) | (8 bytes) <-------------------------- DATA SEGMENT 1 ----------------------> Message segment 1 data (up to 32756 bytes) <-------------------------- DATA SEGMENT 2 ----------------------> + LL + ZZ + Message segment 1 data (2 bytes) | (2 bytes) | (up to 32764 bytes) … <-------------------------- DATA SEGMENT N ----------------------> + LL + ZZ + Message segment N data (2 bytes) | (2 bytes) | (up to 32764 bytes)
<----------------- HEADER ------------------> LLLL + IMS Transaction Name + (4 bytes) | (8 bytes) <-------------------------- DATA SEGMENT 1 ----------------------> Message segment 1 data (up to 32756 bytes) <-------------------------- DATA SEGMENT 2 ----------------------> + LLLL + Message segment 1 data (4 bytes) | (up to 32764 bytes) … <-------------------------- DATA SEGMENT N ----------------------> + LLLL + Message segment 1 data (4 bytes) | (up to 32764 bytes)
Response data is returned with the following format:
<----- HEADER -----> <----------- DATA SEGMENY 1 ------------> + LL + ZZ + Message segment 1 data (2 bytes) | (2 bytes) | (up to 32764 bytes) <-------------------------- DATA SEGMENT 2 ----------------------> + LL + ZZ + Message segment 2 data (2 bytes) | (2 bytes) | (up to 32764 bytes) … <-------------------------- DATA SEGMENT N ----------------------> + LL + ZZ + Message segment N data (2 bytes) | (2 bytes) | (up to 32764 bytes)
<-- HEADER --> <----------- DATA SEGMENY 1 ------------> + LLLL + Message segment 1 data (4 bytes) | (up to 32764 bytes) <-------------------------- DATA SEGMENT 2 ----------------------> + LLLL + Message segment 2 data (4 bytes) | (up to 32764 bytes) … <-------------------------- DATA SEGMENT N ----------------------> + LLLL + Message segment N data (4 bytes) | (up to 32764 bytes)