Distributed program link enables a program (the client program) in one CICS® region to issue an EXEC CICS LINK command to link to a program (the server program) running in another CICS region (the resource region). The link can be through intermediate CICS regions.
The communication in distributed program link processing is, from the CICS side, synchronous, which means that it occurs during a single invocation of the client program, and that requests and replies between two programs can be directly correlated.
The CICS Intercommunication Guide includes information about distributed program link processing.
Figure 34 gives an overview of distributed program link operation.
The DFHEIP module is described in EXEC interface. This routes all program control requests to DFHEPC. DFHEPC passes all remote LINK requests to the program manager domain (PGLE_LINK_EXEC request). For local programs, program manager links to the program and, on return, it returns to DFHEPC. For remote programs, program manager returns to DFHEPC with and exception response, with a reason code indicating "remote program", and DFHEPC passes the request to the intersystems program, DFHISP. The operation of DFHISP for distributed program link is the same as for function shipping, but only the DFHXFP transformations are used. (See Function shipping.) The operation of DFHPEP is described in Program control; the interface to DFHPGLE LINK_EXEC is described in Program manager domain (PG).
CICS handles session failures and systems failures for distributed program link processing by returning a TERMERR condition to the program that issued the LINK request.
If the server program terminates abnormally and does not handle the abend itself, DFHMIRS returns the abend code to the program that issued the LINK request. This code is the last abend code to occur in the server program, which may have handled other abends before terminating.
A client program using distributed program link can specify that a SYNCPOINT is to be taken in the resource region on successful completion of the server program. That is, any resources updated by the server program (or any associated program) are treated as if they are a separate unit of work.
[[ Contents Previous Page | Next Page Index ]]