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
| 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 |
| 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 |