Programming with the IMS support for DRDA

IMS™ provides an implementation of the Distributed Relational Database Architecture™ (DRDA) protocol that you can use to write your own IMS Connect TCP/IP client applications.

DRDA is an open architecture that enables communication between applications and database systems on disparate platforms. Details about using the DRDA protocol to perform database access operations are in the open specifications for DRDA. The following information describes only the IMS-specific extensions provided by the IMS support for DRDA.

To use the IMS support for DRDA, you must create the DRDA client driver (DRDA source server). No additional software needs to be installed or configured on the client system. The DRDA target server consists of IMS Connect and the Open Database Manager (ODBM) running with IMS in z/OS®.

The IMS support for DRDA includes support for both application-directed transaction demarcation (local) and XA-enabled (global) transactions.

IMS does not support the following DRDA functions:
  • Multi-row input
  • Client reroute
  • Security plugin

The IMS support for DRDA is based on the DRDA Version 4 technical standard. The DRDA specification is documented by the Open Group Consortium at www.opengroup.org.

Server compatibility checking

All communication between a source and target DRDA server begins with initialization and security. In the initialization flow, the DRDA client issues the EXCSAT command and an EXCSATRD data object is sent back from the DRDA target server.

In the IMS support for DRDA implementation, the EXCSATRD reply data object includes a Server Release Level (SRVRLSLV) parameter. The SRVRLSLV parameter is a string that specifies the version number of the distributed database management (DDM) language recognized by the IMS Connect and ODBM server components. This string is used by the client to perform server compatibility checking to ensure that both IMS Connect and ODBM understand any codepoints that the client sends. The DDM version numbering is specific to the IMS support for DRDA. All compatibility checking for the IMS support for DRDA is done based on the SRVRLSLVL parameter.

Important: The SRVRLSLV parameter value sent back from the target server in response to the EXCSAT command is OD-ICON 1 OD-ODBM 1.

Updating the source server with the latest maintenance release of IMS without applying the same maintenance release to all your IMS Connect or ODBM installations may cause the source server to be out of synchronization with the target server. To prevent this possibility, the server compatibility check allows the connection to be made only if the IMS support for DRDA target server recognizes the DDM version level that is used by the source server.

How IMS data is mapped to the DRDA protocol

In a database query operation with the IMS support for DRDA, a row is defined as the concatenation of an instance of the aibdbpcbStream data structure plus all of the requested fields within an IMS hierarchic path. An aibdbpcbStream instance is a concatenation of an instance of the aibStream data structure followed by an instance of the dbpcbStream data structure. The requested fields are represented by the RTRVFLD objects sent with an OPNQRY command. The concatenation of the aibdbpcbStream instance and data fields represents a single row in a query row set.

The IMS support for DRDA supports only flexible blocking, where each query block can be a different size, depending on the size of the row or result set being returned. The specified query block size is used as an initial size, and the query block can expand beyond that size, if necessary, to complete the fetch operation.

In the IMS support for DRDA implementation, data is returned from the DRDA target server in byte stream format, and the client is responsible for data type processing.