State tables for LUTYPE6.1 migration-mode conversations

Tables showing the state transitions that occur when transactions engage in LUTYPE6.1 migration mode conversations, under the EXEC CICS® API.

The ISSUE SIGNAL command and the EIBSIG flag

In the tables, the EIBSIG flag is not mentioned. This is because its use is optional and is entirely a matter of agreement between the two conversation partners. In the worst case, it can occur at any time after every command that affects the EIB flags. However, used for the purpose for which it was intended, it usually occurs after a SEND command. Its priority in the order of testing depends on the role you give it in the application.

The EIBSIG flag is set when the partner issues the ISSUE SIGNAL command.

The RECEIVE NOTRUNCATE command

The RECEIVE NOTRUNCATE command returns a zero value in EIBCOMPL to indicate that the user buffer was too small to contain all the data received from the partner transaction. Normally, you would continue to issue RECEIVE NOTRUNCATE commands until the last section of data is passed to you, which is indicated by EIBCOMPL = X'FF'. If NOTRUNCATE is not specified, and the data area specified by the RECEIVE command is too small to contain all the data received, CICS truncates the data and sets the LENGERR condition.

State changes for the SYNCPOINT and SYNCPOINT ROLLBACK commands

When the SYNCPOINT and SYNCPOINT ROLLBACK commands are issued, they are propagated on, and affect the state of, all the conversations that are currently active for the task, including MRO conversations.

Following rollback, the conversation can be in SEND or RECEIVE state, depending on the conversation state at the start of the current distributed unit of work. The conversation can be in FREE state if it ended abnormally due to session failure or due to deallocate abend being received, or if the partner transaction issued a SEND LAST WAIT or FREE command.

After a syncpoint or rollback, it is advisable to determine the conversation state before issuing any further commands against the conversation.

State changes following the ISSUE PREPARE command

Although ISSUE PREPARE can return with the conversation in either SYNCSEND state, SYNCRECEIVE state, or SYNCFREE state, the only commands allowed on that conversation following an ISSUE PREPARE are SYNCPOINT and SYNCPOINT ROLLBACK. All other commands Abend.

State tables

Table 1. States 1 - 6
Command issued EIB flag returned Command returns ALLO- CATED SEND PEND- RECEIVE PEND- FREE RECEIVE CONF- RECEIVE
State 1 State 2 State 3 State 4 State 5 State 6
BUILD ATTACH × Immediately = = = = = =
EXTRACT ATTACH × Immediately INVREQ INVREQ INVREQ INVREQ = INVREQ
EXTRACT PROCESS (back-end transaction only) × Immediately Abend = = = = =
EXTRACT ATTRIBUTES × Immediately = = = = = =
SEND (any valid form) EIBERR + EIBSYNRB After error flow detected Abend 13 13 13 Abend Abend
SEND (any valid form) EIBERR + EIBFREE After error flow detected 12 12 12 12 Abend Abend
SEND (any valid form) EIBERR After error flow detected Abend 5 5 5 Abend Abend
SEND INVITE WAIT × After data flows 5 5 Abend Abend Abend Abend
SEND INVITE CONFIRM × After response from partner 5 5 Abend Abend Abend Abend
SEND INVITE × After data buffered 3 3 Abend Abend Abend Abend
SEND LAST WAIT × After data flows 12 12 Abend Abend Abend Abend
SEND LAST CONFIRM × After response from partner 12 12 Abend Abend Abend Abend
SEND LAST × After data buffered 4 4 Abend Abend Abend Abend
SEND WAIT × After data flows 2 = Abend Abend Abend Abend
SEND CONFIRM × After response from partner 2 = 5 12 Abend Abend
SEND × After data buffered 2 = Abend Abend Abend Abend
RECEIVE EIBERR + EIBSYNRB After rollback flow detected   Abend 13 13 Abend 13 Abend
RECEIVE EIBERR + EIBFREE After error detected   Abend 12 12 Abend 12 Abend
RECEIVE EIBERR After error detected Abend 5 5 Abend = Abend
RECEIVE EIBSYNC + EIBFREE After sync flow detected   Abend 11 11 Abend 11 Abend
RECEIVE EIBSYNC + EIBRECV After sync flow detected   Abend 9 9 Abend 9 Abend
RECEIVE EIBSYNC After sync flow detected Abend 10 10 Abend 10 Abend
RECEIVE EIBCONF + EIBFREE After confirm flow detected   Abend 8 8 Abend 8 Abend
RECEIVE EIBCONF + EIBRECV After confirm flow detected   Abend 6 6 Abend 6 Abend
RECEIVE EIBCONF After confirm flow detected Abend 7 7 Abend 7 Abend
RECEIVE EIBFREE After error flow detected Abend 12 12 Abend 12 Abend
RECEIVE EIBRECV When data available Abend 5 5 Abend = Abend
RECEIVE NOTRUNCATE EIBCOMPL When data available Abend 5 5 Abend = Abend
RECEIVE × When data available Abend = 2 Abend 2 Abend
CONVERSE As for RECEIVE   As for RECEIVE As for RECEIVE As for RECEIVE As for RECEIVE As for RECEIVE As for RECEIVE
ISSUE CONFIRMATION × Immediately Abend Abend Abend Abend Abend 5
ISSUE ERROR EIBFREE After response from partner Abend 12 12 Abend 12 12
ISSUE ERROR × After response from partner Abend = 2 Abend 2 2
ISSUE ABEND × Immediately Abend 12 12 12 12 12
ISSUE SIGNAL × Immediately Abend = = Abend = =
ISSUE PREPARE EIBERR + EIBSYNRB After response from partner   INVREQ 13 13 13 INVREQ INVREQ
ISSUE PREPARE EIBERR + EIBFREE After error detected   INVREQ 12 12 12 INVREQ INVREQ
ISSUE PREPARE EIBERR After error detected INVREQ 5 5 5 INVREQ INVREQ
ISSUE PREPARE × After response from partner INVREQ 10 9 11 INVREQ INVREQ
SYNCPOINT EIBRLDBK After response from partner = 2 or 5 2 or 5 2 or 5 Abend ASP2 Abend ASP2
SYNCPOINT × After response from partner = = 5 12 Abend ASP2 Abend ASP2
SYNCPOINT ROLLBACK × After rollback across UOW = 2 or 5 2 or 5 2 or 5 2 or 5 2 or 5
WAIT × Immediately Abend = 5 12 Abend Abend
FREE × Immediately End End Abend End Abend Abend
Table 2. States 7 - 13
Command issued EIB flag returned CONF- SEND CONF- FREE SYNC- RECEIVE SYNC- SEND SYNC- FREE FREE ROLL- BACK
State 7 State 8 State 9 State 10 State 11 State 12 State 13
BUILD ATTACH × = = = = = = =
EXTRACT ATTACH × INVREQ INVREQ INVREQ INVREQ INVREQ INVREQ INVREQ
EXTRACT PROCESS (back-end transaction only) × = = = = = = =
EXTRACT ATTRIBUTES × = = = = = = =
SEND (any valid form) EIBERR + EIBSYNRB Abend Abend Abend Abend Abend Abend Abend
SEND (any valid form) EIBERR + EIBFREE Abend Abend Abend Abend Abend Abend Abend
SEND (any valid form) EIBERR Abend Abend Abend Abend Abend Abend Abend
SEND INVITE WAIT × Abend Abend Abend Abend Abend Abend Abend
SEND INVITE CONFIRM × Abend Abend Abend Abend Abend Abend Abend
SEND INVITE × Abend Abend Abend Abend Abend Abend Abend
SEND LAST WAIT × Abend Abend Abend Abend Abend Abend Abend
SEND LAST CONFIRM × Abend Abend Abend Abend Abend Abend Abend
SEND LAST × Abend Abend Abend Abend Abend Abend Abend
SEND WAIT × Abend Abend Abend Abend Abend Abend Abend
SEND CONFIRM × Abend Abend Abend Abend Abend Abend Abend
SEND × Abend Abend Abend Abend Abend Abend Abend
RECEIVE EIBERR + EIBSYNRB Abend Abend Abend Abend Abend Abend Abend
RECEIVE EIBERR + EIBFREE Abend Abend Abend Abend Abend Abend Abend
RECEIVE EIBERR Abend Abend Abend Abend Abend Abend Abend
RECEIVE EIBSYNC + EIBFREE Abend Abend Abend Abend Abend Abend Abend
RECEIVE EIBSYNC + EIBRECV Abend Abend Abend Abend Abend Abend Abend
RECEIVE EIBSYNC Abend Abend Abend Abend Abend Abend Abend
RECEIVE EIBCONF + EIBFREE Abend Abend Abend Abend Abend Abend Abend
RECEIVE EIBCONF + EIBRECV Abend Abend Abend Abend Abend Abend Abend
RECEIVE EIBCONF Abend Abend Abend Abend Abend Abend Abend
RECEIVE EIBFREE Abend Abend Abend Abend Abend Abend Abend
RECEIVE EIBRECV Abend Abend Abend Abend Abend Abend Abend
RECEIVE NOTRUNCATE EIBCOMPL Abend Abend Abend Abend Abend Abend Abend
RECEIVE × Abend Abend Abend Abend Abend Abend Abend
CONVERSE As for RECEIVE As for RECEIVE As for RECEIVE As for RECEIVE As for RECEIVE As for RECEIVE As for RECEIVE As for RECEIVE
ISSUE CONFIRMATION × 2 12 Abend Abend Abend Abend Abend
ISSUE ERROR EIBFREE 12 12 12 12 12 Abend Abend
ISSUE ERROR × 2 2 2 2 2 Abend Abend
ISSUE ABEND × 12 12 12 12 12 Abend Abend
ISSUE SIGNAL × = = = = = Abend Abend
ISSUE PREPARE EIBERR + EIBSYNRB INVREQ INVREQ INVREQ INVREQ INVREQ INVREQ INVREQ
ISSUE PREPARE EIBERR + EIBFREE INVREQ INVREQ INVREQ INVREQ INVREQ INVREQ INVREQ
ISSUE PREPARE EIBERR INVREQ INVREQ INVREQ INVREQ INVREQ INVREQ INVREQ
ISSUE PREPARE × INVREQ INVREQ INVREQ INVREQ INVREQ INVREQ INVREQ
SYNCPOINT EIBRLDBK Abend Abend 2 or 5 2 or 5 2 or 5 = Abend
SYNCPOINT × Abend Abend 2 2 12 = Abend
SYNCPOINT ROLLBACK × 2 or 5 2 or 5 2 or 5 2 or 5 2 or 5 = 2 or 5
WAIT × Abend Abend Abend Abend Abend Abend Abend
FREE × Abend Abend Abend Abend Abend End Abend