Program link calls

Program link calls cause the CICS® mirror transaction to be attached to run a server program on the CICS server.

ECI request program link calls can be synchronous or asynchronous:

Synchronous
Synchronous calls are blocking calls. The user application is suspended until the called server program has finished and a reply is received from CICS. The received reply is immediately available.
Asynchronous
Asynchronous calls are nonblocking calls. The user application gets control back without waiting for the called server program to finish. The reply from CICS can be retrieved later using one of the reply solicitation calls or a callback. See Retrieving replies from asynchronous ECI requests. An asynchronous program link call is outstanding until a reply solicitation call, or the callback, has retrieved the reply.

Synchronous and asynchronous program link calls can be nonextended or extended:

Nonextended
The CICS server program, not the user application, controls whether recoverable resources are committed or backed out. Each program link call corresponds to one CICS transaction.
Extended
The user application controls whether recoverable resources are committed or rolled back. Multiple calls are possible, allowing a LUW to be extended across successive ECI requests to the same CICS server. This is known as an extended logical unit of work (extended LUW).

CICS user applications are often concerned with updating recoverable resources. A LUW is the processing that a CICS server program performs between syncpoints. A syncpoint is the point at which all changes to recoverable resources that were made by a task since its last syncpoint are committed. LUW management is performed by the user application, using the commit and rollback functions:

Commit
Ends the current LUW and any changes made to recoverable resources are committed.
Rollback
Terminates the current LUW and backs out (rolls back) any changes made to recoverable resources since the previous syncpoint.

ECI-based communications between the CICS server and the CICS Transaction Gateway or CICS Universal Client are known as conversations. A nonextended program link ECI call is one conversation. A series of extended ECI calls followed by a commit or rollback is one conversation.

On platforms other than z/OS®, a given logical unit of work can include ECI requests to only one server. Only one transaction can be active at a time in a logical unit of work, so care must be taken with non-synchronous requests.