CICS deviations from the APPC architecture

CICS deviates from the APPC architecture in a small number of detailed respects.

CICS® allows EXEC CICS commands to be issued on APPC conversations when a backout (rollback) is required but the conversation is not in rollback state (state 13).

When a session is being allocated, the back-end CICS system checks the incoming bind request for valid combinations of CNOS (change number of sessions) and parallel-sessions indicators. If CICS finds that parallel-sessions is specified but CNOS is not, it sends a negative response to the bind request.

CICS allows a sync level-2 conversation to be terminated using the SEND LAST WAIT or SEND LAST CONFIRM commands. However, doing this is a deviation from the APPC architecture and should be avoided. Figure 1 illustrates the problems that can be caused by not syncpointing a sync level-2 conversation.
Figure 1. Losing data integrity on a sync level-2 conversation.
In this example, transaction AAAA in communicating with transaction BBBB:
  1. Transaction AAAA issues a CONNECT PROCESS command, specifying SYNCLEVEL(2).
  2. Transaction AAAA issues a SEND command; the attach header and data is transmitted, and transaction BBBB is started.
  3. Transaction BBBB issues a RECEIVE command.
  4. A serious error occurs in transaction BBBB.
  5. Transaction BBBB issues an ISSUE ABEND command. The transaction is suspended pending the receipt of a change direction or end bracket from transaction AAAA.
  6. Transaction AAAA issues a SEND LAST WAIT command, with no data. The end bracket is transmitted to transaction BBBB.
  7. Transaction BBBB is resumed; the incoming end bracket puts the conversation into free state.

    From this point, the two transactions execute independently.

  8. Transaction AAAA frees its conversation.
  9. Transaction AAAA ends; its changes are committed.
  10. Transaction BBBB issues a SYNCPOINT ROLLBACK command. Its changes are backed out.
This figure illustrates a scenario in which data integrity can be lost on a sync-level 2 conversation.

Because transaction AAAA ends the conversation using the SEND LAST WAIT command, transaction BBBB cannot inform it that an error has occurred. The ISSUE ABEND command causes the backout-required condition to be raised in transaction BBBB; so a SYNCPOINT ROLLBACK is needed. Transaction AAAA commits changes to its resources and data integrity is lost.

The resulting state errors may also lead to the session being unbound.



dfhp63k.html | Timestamp icon Last updated: Thursday, 27 June 2019