By Jack Yuan and Sanjay Kaliyur
At IBM, we put a great deal of focus on application modernization. We love enabling our clients to keep their systems and applications modern and running smoothly. To further aid in our mission of ensuring future prosperity for our clients, we have an exciting new enhancement to share with IMS TM customers: the IMS Connect ALTPCB Output enhancement!
Moving from SNA to TCP/IP
Most IMS TM customers looking to modernize their applications are looking for ways to update their infrastructure without making changes to the applications themselves. These IMS applications are often mission-critical and have been running smoothly for decades. Making changes to these applications poses a significant business risk.
Several IMS TM customers are looking to move off Systems Network Architecture (SNA) in favor of a TCP/IP architecture with IMS Connect. Their IMS applications use I/O Program Communication Blocks (IOPCB) and/or Alternate Program Communication Blocks (ALTPCB) for sending IMS output messages to IMS Connect. Until now, the SENDRECV call of IMS Connect only supports IOPCB, which would mean customers with applications that use ALTPCB would need to make changes to their applications or write a complex IMS Connect client application to retrieve queued ALTPCB output messages using Resume TPIPE calls.
The new IMS Connect ALTPCB Output Enhancement
To better enable the migration of our customers off SNA architecture to TCP/IP, we’re thrilled to announce that we have added ALTPCB support for the IMS Connect SENDRECV function! This means that our customers can more easily move to TCP/IP and reduce their usage of legacy SNA.
How does it work?
In IMS version 15, IMS introduces a new function, SENDALTP, for IMS Connect customers using CM0 SENDRECV calls to obtain an ALTPCB output without changing their IMS applications or issuing Resume TPIPE calls. Once IMS receives a CM0 SENDRECV call from IMS Connect with SENDALTP function activated, an ALTPCB output triggered by an IMS Connect input transaction can be sent back to the initiating IMS Connect client using the inputting TPIPE. Without the SENDALTP function activated, when IMS Connect is identified as the destination of an IMS ALTPCB output message, IMS queues the output to an OTMA TPIPE hold queue instead of delivering it. This queued ALTPCB output can be kept in IMS for a long time until an IMS Connect client issues a Resume TPIPE call to retrieve it.
Activating the SENDALTP function
IMS Connect customers can activate the SENDALTP function via a message-level activation method or a datastore-level activation method. For the message-level activation, the IMS Connect client can set the IRM_F2_SNDALTP flag in the input CM0 SENDRECV call to obtain an IMS ALTPCB output. An OTMA destination descriptor and/or DFSYDRU0 user exit can also be used to activate the SENDALTP function for an IMS ALTPCB output message to IMS Connect. Here are some ways that the SENDALTP function can be activated through message-level activation:
- Set the IMS Connect IRM flag, IRM_F2_SNDALTP, for a user-written IMS Connect client
- Specify SENDALTP for OTMA destination descriptor in DFSYDTx PROCLIB member or issue CREATE/UPDATE OTMADESC type-2 commands to turn on SENDALTP
- Set the SENDALTP output flag for IMS DFSYDRU0 user exit
For the datastore-level activation, the IMS Connect system, IMS Connect datastore, or OTMA client descriptor can activate the SENDALTP function for an IMS Connect datastore or OTMA member so that all the IMS Connect CM0 SENDRECV calls from the datastore can obtain the IMS ALTPCB output messages. Here are some ways that the SENDALTP function can be activated through datastore-level activation:
- Issue CREATE/UPDATE IMSCON type-2 commands to turn on the SENDALTP function for datastore(s)
- Specify SENDALTP parameter in the HWS and/or DATASTORE statements of IMS Connect HWSCFGxx PROCLIB member to turn on the SENDALTP function
- Specify SENDALTP to activate the function using OTMA client descriptor
The order of precedence of activating SENDALTP function is as follows:
- Message level activation from an IMS Connect client with IRM_F2_SNDALTP set
- Message level activation from IMS OTMA destination descriptor or IMS DFSYDRU0 user exit
- Datastore level activation via IMSCON type 2 commands or IMS Connect configuration member
- Datastore level activation via IMS OTMA client descriptor
When an OTMA destination descriptor is used to handle the ALTPCB output message, the SENDALTP function will be disabled if TYPE= parameter is not IMSCON. If the TMEMBER= parameter of OTMA destination descriptor is not the initiating IMS Connect member, the SENDALTP function will also be disabled. This means the supported ALTPCB output message flow for the new function is: "TCP/IP APP->IMS CONNECT X->IMS->IMS CONNECT X->TCP/IP APP". Specifying a super member won't affect the SENDALTP function. For example, when both SMEM=YES and SENDALTP=YES are specified, IMS ALTPCB output will be sent back to the initiating IMS Connect client instead of queuing it to the super member. When the SENDALTP function is activated for an ALTPCB output for IMS Connect, the ALTPCB output TPIPE name will be the inputting TPIPE name of the initiating CM0 SENDRECV call instead of the TPIPE name specified in the destination descriptor. When OTMA DFSYDRU0 user exit is used to handle the ALTPCB output message, the SENDALTP function will be disabled if the exit sets a different output destination member/datastore which is not the initiating IMS Connect client. Once the SENDALTP function is activated, the TPIPE override name in the output parameter of the DFSYPRX0 or DFSYDRU0 exits, if specified, will be omitted. This is because the inputting IMS Connect TPIPE name will be used to send back the ALTPCB output when SENDALTP is activated.
The SENDALTP function has the following restrictions:
- SENDALTP can only be enabled for IMS Connect. Other OTMA clients, such as MQSeries, cannot activate this function.
- SENDALTP only supports CM0 SENDRECV calls from IMS Connect. Other input messages, such as CM1 input messages and CM0 send-only calls, cannot enable the SENDALTP function.
- SENDALTP function cannot be used to process an IMS ALTPCB output initiated by non-IMS Connect clients.
- Once OTMA destination descriptor and/or IMS DFSYDRU0 user exit decide to route the IMS ALTPCB output to a non-OTMA destination or a different OTMA client, the SENDALTP function will be disabled.
Additionally, users may want to avoid activating the SENDALTP function for IMS Connect if a CM0 SENDRECV call will trigger both I/O PCB output and ALTPCB output messages. This is because IMS will deliver both output messages to IMS Connect when the SENDALTP function is activated. IMS Connect will accept the first output message from I/O PCB or ALTPCB and reject the subsequent output message(s). The rejected output messages will then be queued to an OTMA TPIPE hold queue or be purged if asked.
How can I get it?
The new IMS Connect ALTPCB Output enhancement is available for all IMS customers running IMS version 15.1 and above through APAR PH39434 and PH39438. For customers using IMS Connect API for JAVA, APAR PH43558 exploits the SENDALTP function by offering a message-level activation method. For customers using IMS TM Resource Adapter, APAR PH43543 exploits the SENDALTP function by offering a message-level activation method.
If you’d like to learn more about IMS and view the great educational content our team has made available, please visit IMS Central.