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.