z/OS MVS Programming: Writing Transaction Programs for APPC/MVS
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


How to Use the State Table

z/OS MVS Programming: Writing Transaction Programs for APPC/MVS
SA23-1397-00

The various calls and combinations of parameters, also referred to as inputs, are shown along the left side of the table. These inputs correspond to the rows of the table. The possible states are shown across the top of the table. The states correspond to the columns of the matrix. The intersection of input (row) and state (column) represents what state transition, if any, will occur for the APPC/MVS call that is issued in that particular state.

For example, look at ATBALLC[ok]. The [ok] indicates that a return code of OK was received on the call. By examining the row, notice that the call can be issued only in Reset state (state 1).

When issued in state 1, the 3 in the column for Reset indicates that the program progresses to state 3, Send. A scan down this column shows that the ATBSEND call can be made from here. Some variations in the ATBSEND row that entail a change of state are for return codes of:
  • “ok” when the conversation characteristic (P) indicates that the send_type is set to SEND_AND_PREP_TO_RECEIVE, which allows the program to progress to state 4.
  • “ok” when the conversation characteristic (D) indicates that the send_type is set to SEND_AND_DEALLOCATE, which puts the program back into Reset state (state 1).
Table 1. States and Transitions for APPC/MVS Conversation Calls
                Inputs Used by all conversations Used only by conversations with sync_level set to Syncpt
Re- set     1 Ini- tial- ize     2 Send         3 Re- ceive   4 Send Pend- ing     5 Con- firm       6 Con- firm Send   7 Con- firm Deal - locate   8 Defer- Re- ceive   9 Defer- Deal- locate     10 Sync- Point       11 Sync- Point Send     12 Sync- Point Deal- locate   13

ATBALC2[ok]↑

3

>

>

>

>

>

>

>

>

>

>

>

>

ATBALC2[ae]

>

>

>

>

>

>

>

>

>

>

>

>

ATBALC2[pe]

>

>

>

>

>

>

>

>

>

>

>

>

ATBALC2[pc]

>

>

>

>

>

>

>

>

>

>

>

>

ATBALC2[un]

>

>

>

>

>

>

>

>

>

>

>

>

ATBALLC[ok]↑

3

>

>

>

>

>

>

>

>

>

>

>

>

ATBALLC[ae]

>

>

>

>

>

>

>

>

>

>

>

>

ATBALLC[pe]

>

>

>

>

>

>

>

>

>

>

>

>

ATBALLC[pc]

>

>

>

>

>

>

>

>

>

>

>

>

ATBALLC[un]

>

>

>

>

>

>

>

>

>

>

>

>

ATBCFM[ok]↑

>

>

>

3

>

>

>

4

>

>

>

>

ATBCFM[ae]

>

>

1

>

1

>

>

>

1

>

>

>

>

ATBCFM[da]

>

>

1

>

1

>

>

>

1

>

>

>

>

ATBCFM[ep]

>

>

4

>

4

>

>

>

4

>

>

>

>

ATBCFM[rf]

>

>

1

>

1

>

>

>

1

>

>

>

>

ATBCFM[pc]

>

>

>

>

>

>

>

>

>

>

ATBCFM[bo]

>

>

–‸

>

3‸

>

>

>

4‸

>

>

>

>

ATBCFM[rb]

>

>

1‸

>

1‸

>

>

>

1‸

>

>

>

>

ATBCFM[db]

>

>

1‸

>

1‸

>

>

>

1‸

>

>

>

>

ATBCFMD[ok]↑

>

>

>

>

>

4

3

1

>

>

>

>

>

ATBCFMD[pc]

>

>

>

>

>

>

>

>

>

>

ATBDEAL(F)[ok]↑

>

>

1

>

1

>

>

>

>

>

>

>

>

ATBDEAL(F)[pc]

>

>

>

>

>

>

>

>

>

>

>

ATBDEAL(C)[ok]

>

>

1

>

1

>

>

>

>

>

>

>

>

ATBDEAL(C)[ae]

>

>

1

>

1

>

>

>

>

>

>

>

>

ATBDEAL(C)[da]

>

>

1

>

1

>

>

>

>

>

>

>

>

ATBDEAL(C)[ep]

>

>

4

>

4

>

>

>

>

>

>

>

>

ATBDEAL(C)[rf]

>

>

1

>

1

>

>

>

>

>

>

>

>

ATBDEAL(C)[pc]

>

>

>

>

>

>

>

>

>

>

>

ATBDEAL(A)[ok]

>

>

1‸

1‸

1‸

1‸

1‸

1‸

1‸

1‸

1‸

1‸

1‸

ATBDEAL(A)[pc]

>

>

ATBDEAL(S)[ok]↑

>

>

10

>

10

>

>

>

>

>

>

>

>

ATBDEAL(S)[pc]

>

>

>

>

>

>

>

>

>

>

>

ATBFLUS[ok]↑

>

>

>

3

>

>

>

4

>

>

>

>

ATBFLUS[pc]

>

>

>

>

>

>

>

>

>

>

ATBGETC[ok]

4

>

>

>

>

>

>

>

>

>

>

>

>

ATBGETC[pc]

>

>

>

>

>

>

>

>

>

>

>

>

ATBGTA2

>

>

ATBGETA

>

>

ATBPOR2

>

>

>

>

>

>

>

>

>

>

>

>

ATBPTR(F)[ok]↑

>

>

4

>

4

>

>

>

>

>

>

>

>

ATBPTR(F)[pc]

>

>

>

>

>

>

>

>

>

>

>

ATBPTR(S)[ok]↑

>

>

9

>

9

>

>

>

>

>

>

>

>

ATBPTR(S)[pc]

>

>

>

>

>

>

>

>

>

>

>

ATBPTR(C)[ok]↑

>

>

4

>

4

>

>

>

>

>

>

>

>

ATBPTR(C)[ae]

>

>

1

>

1

>

>

>

>

>

>

>

>

ATBPTR(C)[da]

>

>

1

>

1

>

>

>

>

>

>

>

>

ATBPTR(C)[ep]

>

>

4

>

4

>

>

>

>

>

>

>

>

ATBPTR(C)[rf]

>

>

1

>

1

>

>

>

>

>

>

>

>

ATBPTR(C)[pc]

>

>

>

>

>

>

>

>

>

>

>

ATBPTR(C)[bo]

>

>

4‸

>

4‸

>

>

>

>

>

>

>

>

ATBPTR(C)[db]

>

>

1‸

>

1‸

>

>

>

>

>

>

>

>

ATBPTR(C)[rb]

>

>

1‸

>

1‸

>

>

>

>

>

>

>

>

ATBRCVI[ok]{dr,no}↑

>

>

>

>

>

>

>

>

>

>

>

>

ATBRCVI[ok]{nd,se}

>

>

>

3

>

>

>

>

>

>

>

>

>

ATBRCVI[ok]{dr,se}

>

>

>

5

>

>

>

>

>

>

>

>

>

ATBRCVI[ok]{*,co}

>

>

>

6

>

>

>

>

>

>

>

>

>

ATBRCVI[ok]{*,cs}

>

>

>

7

>

>

>

>

>

>

>

>

>

ATBRCVI[ok]{*,cd}

>

>

>

8

>

>

>

>

>

>

>

>

>

ATBRCVI[ok]{*,tc}

>

>

>

11

>

>

>

>

>

>

>

>

>

ATBRCVI[ok]{*,ts}

>

>

>

12

>

>

>

>

>

>

>

>

>

ATBRCVI[ok]{*,td}

>

>

>

13

>

>

>

>

>

>

>

>

>

ATBRCVI[ae]↑

>

>

>

1

>

>

>

>

>

>

>

>

>

ATBRCVI[da]

>

>

>

1

>

>

>

>

>

>

>

>

>

ATBRCVI[dn]

>

>

>

1

>

>

>

>

>

>

>

>

>

ATBRCVI[en]

>

>

>

>

>

>

>

>

>

>

>

>

ATBRCVI[ep]

>

>

>

>

>

>

>

>

>

>

>

>

ATBRCVI[et]

>

>

>

>

>

>

>

>

>

>

>

>

ATBRCVI[rf]

>

>

>

1

>

>

>

>

>

>

>

>

>

ATBRCVI[pc]

>

>

>

>

>

>

>

>

>

>

>

>

ATBRCVI[un]

>

>

>

>

>

>

>

>

>

>

>

>

ATBRCVI[bo]

>

>

>

–‸

>

>

>

>

>

>

>

>

>

ATBRCVI[db]

>

>

>

1‸

>

>

>

>

>

>

>

>

>

ATBRCVI[rb]

>

>

>

1‸

>

>

>

>

>

>

>

>

>

ATBRCVW[ok]{dr,no}↑

>

>

4

4

>

>

>

>

>

>

>

>

ATBRCVW[ok]{nd,se}

>

>

3

3

>

>

>

>

>

>

>

>

ATBRCVW[ok]{dr,se}

>

>

5

5

>

>

>

>

>

>

>

>

ATBRCVW[ok]{*,co}

>

>

6

6

6

>

>

>

>

>

>

>

>

ATBRCVW[ok]{*,cs}

>

>

7

7

7

>

>

>

>

>

>

>

>

ATBRCVW[ok]{*,cd}

>

>

8

8

8

>

>

>

>

>

>

>

>

ATBRCVW[ok]{*,tc}

>

>

11

11

11

>

>

>

>

>

>

>

>

ATBRCVW[ok]{*,ts}

>

>

12

12

12

>

>

>

>

>

>

>

>

ATBRCVW[ok]{*,td}

>

>

13

13

13

>

>

>

>

>

>

>

>

ATBRCVW[ae]↑

>

>

1

1

1

>

>

>

>

>

>

>

>

ATBRCVW[da]

>

>

1

1

1

>

>

>

>

>

>

>

>

ATBRCVW[dn]

>

>

1

1

1

>

>

>

>

>

>

>

>

ATBRCVW[en]

>

>

4

4

>

>

>

>

>

>

>

>

ATBRCVW[ep]

>

>

4

4

>

>

>

>

>

>

>

>

ATBRCVW[et]

>

>

>

4

>

>

>

>

>

>

>

>

ATBRCVW[rf]

>

>

1

1

1

>

>

>

>

>

>

>

>

ATBRCVW[pc]

>

>

>

>

>

>

>

>

>

>

ATBRCVW[bo]

>

>

4‸

–‸

4‸

>

>

>

>

>

>

>

>

ATBRCVW[db]

>

>

1‸

1‸

1‸

>

>

>

>

>

>

>

>

ATBRCVW[rb]

>

>

1‸

1‸

1‸

>

>

>

>

>

>

>

>

ATBRJC2

>

>

>

1

>

>

>

>

>

>

>

>

>

ATBRTS[ok]↑

>

>

>

>

ATBRTS[pc]

>

>

>

>

ATBSCA2

>

ATBSEND(B)[ok]↑

>

>

>

3

>

>

>

>

>

>

>

>

ATBSEND(F)[ok]

>

>

>

3

>

>

>

>

>

>

>

>

ATBSEND(C)[ok]

>

>

>

3

>

>

>

>

>

>

>

>

ATBSEND(P(C))[ok]

>

>

4

>

4

>

>

>

>

>

>

>

>

ATBSEND(P(F))[ok]

>

>

4

>

4

>

>

>

>

>

>

>

>

ATBSEND(P(S))[ok]

>

>

9

>

9

>

>

>

>

>

>

>

>

ATBSEND(D(A))[ok]

>

>

1‸

>

1‸

>

>

>

>

>

>

>

>

ATBSEND(D(C))[ok]

>

>

1

>

1

>

>

>

>

>

>

>

>

ATBSEND(D(F))[ok]

>

>

1

>

1

>

>

>

>

>

>

>

>

ATBSEND(D(S))[ok]

>

>

10

>

10

>

>

>

>

>

>

>

>

ATBSEND(*)[ae]↑

>

>

1

>

1

>

>

>

>

>

>

>

>

ATBSEND(*)[da]

>

>

1

>

1

>

>

>

>

>

>

>

>

ATBSEND(*)[ep]

>

>

4

>

4

>

>

>

>

>

>

>

>

ATBSEND(*)[rf]

>

>

1

>

1

>

>

>

>

>

>

>

>

ATBSEND(*)[pc]

>

>

>

>

>

>

>

>

>

>

>

ATBSEND(*)[bo]

>

>

–‸

>

3‸

>

>

>

>

>

>

>

>

ATBSEND(*)[db]

>

>

1‸

>

1‸

>

>

>

>

>

>

>

>

ATBSEND(*)[rb]

>

>

1‸

>

1‸

>

>

>

>

>

>

>

>

ATBSERR[ok]↑

>

>

3

3

3

3

3

>

>

3

3

3

ATBSERR[ae]

>

>

1

>

>

>

>

>

>

>

>

>

>

ATBSERR[da]

>

>

1

>

>

>

>

>

>

>

>

>

>

ATBSERR[dn]

>

>

>

1

>

>

>

>

>

>

>

>

>

ATBSERR[ep]

>

>

4

>

>

>

>

>

>

>

>

>

>

ATBSERR[rf]

>

>

1

1

1

1

1

1

>

>

1

1

1

ATBSERR[pc]

>

>

>

>

ATBSERR[bo]

>

>

–‸

>

3‸

>

>

>

>

>

–‸

–‸

–‸

ATBSERR[rb]

>

>

1‸

1‸

1‸

1‸

1‸

1‸

>

>

1‸

1‸

1‸

ATBSERR[db]

>

>

1‸

>

>

>

>

>

>

>

>

>

>

ATBSERR[dnb]

>

>

>

1‸

>

>

>

>

>

>

>

>

>

SRRCMIT[ok]

>

3

>

>

>

4

1

4

3

1

SRRCMIT[cop]

>

3

>

>

>

4

1

4

3

1

SRRCMIT[com]

>

3

>

>

>

4

1

4

3

1

SRRCMIT[bo]

#

>

#

>

>

>

#

#

#

#

#

SRRCMIT[bop]

#

>

#

>

>

>

#

#

#

#

#

SRRCMIT[bom]

#

>

#

>

>

>

#

#

#

#

#

SRRCMIT[sc]

>

>

>

>

SRRBACK[ok]

#

#

#

#

#

#

#

#

#

#

#

SRRBACK[bop]

#

#

#

#

#

#

#

#

#

#

#

SRRBACK[bom]

#

#

#

#

#

#

#

#

#

#

#

Note:
  1. For all SRRCMIT inputs: When a program started by an incoming allocation request issues a Commit call before issuing an Accept_Conversation or Get_Conversation for the conversation that started the program, the Commit call has no effect on the conversation in Reset state. This behavior is different from what the CPI-C Reference defines concerning the affect of issuing a Commit call against a conversation in Reset state. CPI-C Reference states that when a program started by an incoming allocation request issues a Commit call before issuing an Accept_Conversation call (the CPI equivalent to Get_Conversation), a state check results. The Commit call has no effect on other conversations in Reset state.
  2. For all SRRBACK inputs: When a program started by an incoming allocation request issues a Backout call before issuing an Accept_Conversation or Get_Conversation for the conversation that started the program, the Backout call has no effect on the conversation in Reset state. This behavior is different from what the CPI-C Reference defines concerning the affect of issuing an SRRBACK call against a conversation in Reset state. CPI-C Reference states that when a program started by an incoming allocation request issues a Backout call before issuing an Accept_Conversation (the CPI equivalent to Get_Conversation), the underlying LU 6.2 conversation is actually backed out, though the conversation remains in Reset state. What this actually means is that a Backout is flowed on the unaccepted LU 6.2 conversation on the behalf of the application.
  3. For all SRRCMIT and SRRBACK inputs: Conversations in Initialize state are not affected by Commit and Backout calls.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014