DSNRLI Overview

Important: It is strongly recommended that only dynamically registered XA switch modules are used with DSNRLI. If statically registered switches must be used, please ensure that a SRRCMIT or SRRBACK call occurs before a TERMINATE THREAD call. This is required as the DSNRLI implementation has no state knowledge of static RM participation in the global transaction.

DSNRLI is the language interface load module for the DB2 Resource Recovery Services attachment facility (RRSAF). It provides the interface to RRSAF only through the DSNRLI entry point. This entry point provides explicit service connection requests for any XA resource, including WebSphere MQ.

The interface is separate from the mainframe version of RRSAF, which provides closer control over DB2 connections. The interface is designed to provide the necessary functions to help ease application migration.

On the mainframe, the RRSAF language interface module (DSNRLI) is an extension to DB2 and, when used by a program, all DB2 SQL calls pass through one of its entry points, DSNHLIR. However, IBM's RRSAF is not available in DB2 LUW. Micro Focus provides its own version of this module to ease migration of customer applications. However, because it is not part of DB2, it does not provide all of the functions that the mainframe version does.

The Call Attachment Facility (CAF) DSNALI interface provides basic DB2 connection control functions: Connect, Open, Close etc.

In addition to the functions used to call transaction processing APIs, the Micro Focus DSNRLI functionality provides the Common Program Interface - Communications (CPIC) utility functions SRRCMIT (commit) and SRRBACK (rollback)

You can use either the appropriate XA resource COMMIT statement or the CPIC SRRCMIT function to commit work to RRSAF applications. Likewise, you can use either the appropriate XA resource ROLLBACK statement or the CPIC SRRBACK function to roll back work.

Use appropriate XA resource COMMIT and ROLLBACK statements if:

Use CPIC SRRCMIT and SRRBACK functions if: