Overview of DPL

CICS® distributed program link enables CICS application programs to run programs that are in other CICS regions by shipping program-control LINK requests.

An advantage of DPL is that you can write an application without knowledge of the location of the requested programs. The application uses program-control LINK commands in the usual way. The CICS program resource definitions usually specify that the named program is not in the local region (client region), but in a remote region (server region).

An illustration of a DPL request is shown in Figure 1. In this diagram, a program (the client program) running in CICA issues a program-control LINK command for a program called PGA (the server program). From the installed program definitions, CICS discovers that the PGA program is owned by a remote CICS system called CICB. CICS changes the LINK request into a suitable transmission format and then ships it to CICB to run.

In CICB, the mirror transaction (described in CICS function shipping) is attached. The mirror program DFHMIRS, which is used by all mirror transactions, re-creates the original request and issues the request on CICB. When the server program has run to completion, the mirror program returns any communication-area data to CICA.
Figure 1. Distributed program link
The picture shows two CICS regions, CICA and CICB, connected by an ISC, MRO, or IPIC session. On CICA, a program PGA is defined as owned by CICB (REMOTESYSTEM(CICB)). On CICB, PGA is defined as a local program. On CICA, a program issues an EXEC CICS LINK PROGRAM('PGA') COMMAREA(....) command. Because program PGA is defined as remote, CICA ships the request to CICB. On CICB, the mirror transaction issues the LINK PROGRAM call and, when PGA has completed, returns any communication-area data to CICA.

The CICS recovery and restart facilities enable resources in remote regions to be updated and ensure that, when the client program reaches a sync point, any mirror transactions that are updating protected resources also take a sync point. So changes to protected resources in remote and local systems are consistent. The CSMT transient data queue is notified of any failures in this process, so that suitable corrective action can be taken, whether manually or by user-written code.

A client program can run in a CICS intercommunication environment and use DPL without any knowledge of the location of the server program. The location of the server program is communicated to CICS in one of two ways. DPL requests can be routed to the server region either statically or dynamically.

Provided that both the client and the server regions are CICS TS for z/OS®, Version 3.2 or later, DPL is supported over IPIC connections, as well as over MRO and ISC over SNA connections. Support for DPL functions using IPIC over TCP/IP is equivalent to that for DPL over MRO and DPL over SNA; for example, both two-phase commit and containers are supported. For regions from CICS TS for z/OS, Version 4.2, when you use an IPIC connection and a long-running mirror, CICS runs the mirror program DFHMIRS on an L8 open TCB whenever possible, which can improve performance for threadsafe programs in the server region. The LINK command also is threadsafe when it is used to link to a program in a remote CICS region over an IPIC connection only. For MRO and ISC over SNA connections, the mirror program does not run on an open TCB and the LINK command is not threadsafe.

If both an IPIC connection and an ISC over SNA connection exist between two CICS regions, and both have the same name, the IPIC connection takes precedence. That is, if remote region CICB is defined by both an IPCONN definition and a CONNECTION definition, CICS uses the IPCONN definition. However, if the IPCONN is not acquired but is in service, the ISC over SNA connection is used.