Exception conditions

It may happen that a negative response is received by VTAM for a chain that is generated by a SEND OPTCD=LMPEO. If the response is received before SEND is posted complete, then OPTCD=CONTCHN or NCONTCHN and POST=SCHED or RESP on the SEND control what action is taken. Table 1 and the following paragraphs describe how these operands are used. VTAM either continues to send the remainder of the chain (OPTCD=CONTCHN), or aborts the chain if there is any part of the message not yet sent (OPTCD=NCONTCHN). Normally, an application program should use NCONTCHN, the default.

Table 1. Negative-response handling by VTAM for SEND OPTCD=LMPEO
  POST=SCHED POST=RESP
OPTCD=CONTCHN Last or Not Last (see Note):
  • Deliver response to application program.
  • Send rest of chain.
  • Post SEND with (RTNCD,FDB2)=(X'0C',X'0D').
Not Last:
  • Deliver response to application program.
  • Send rest of chain.
  • Post SEND with (RTNCD,FDB2)=(X'0C',X'0D').
Last:
  • Post SEND with (RTNCD,FDB2)= (X'04',X'04') and negative response.
OPTCD=NCONTCHN Last or Not Last:
  • Deliver response to application program.
  • Send zero-length LIC RU if SEND specified CHAIN=ONLY or LAST.
  • Post SEND with (RTNCD,FDB2)=(X'0C',X'0D').
Not Last:
  • Deliver response to application program.
  • Send zero-length LIC RU if SEND specified CHAIN=ONLY or LAST.
  • Post SEND with (RTNCD,FDB2)=(X'0C',X'0D').
Last:
  • Post SEND with (RTNCD,FDB2)=(X'04',X'04') and negative response.
Note:

Last means that unless there is a negative response received, this is the last request sent for this SEND. Deliver response to application program means that the application program must issue a RECEIVE RPL (RTYPE=RESP) or use a RESP exit routine.

When VTAM receives a negative response, VTAM ends the chain by immediately posting the SEND complete with (RTNCD,FDB2)=(X'0C',X'0D') and by not sending the remaining data of the message. Additionally, when a chain ends, if the last request normally sent for the message is an LIC request, then an LIC zero-length RU is sent to end the chain. This request has the same RH that would have been sent with the final request for that message if no error occurred.

When SEND fails with (RTNCD,FDB2)=(X'04',X'04'), the sense information is available in RPLFDBK2. However, when SEND fails with (RTNCD,FDB2)=(X'0C',X'0D'), then the application program must issue the RECEIVE RPL (or an available RESP exit routine) to obtain the failing sense code.

In all cases, the negative response is passed back to the application program (by means of a RESP exit routine, a RECEIVE, or by posting SEND POST=RESP). For SEND POST=RESP, if the sequence number of the negative response is the same as the sequence number of the last request sent, and if that request was the last request for the message (that is, no data remains to be sent for the message), then SEND is posted complete with (RTNCD,FDB2)= (X'04',X'04') instead of (X'0C',X'0D').

The OBSQVAL and SEQNO fields always indicate the sequence numbers of the first and last requests (including the zero-length RU discussed above) that are actually sent by VTAM.

An outstanding SEND is posted complete when a Clear request is sent or received or when the associated session ends. This is independent of whether OPTCD=LMPEO is used. For OPTCD=LMPEO, part of the chain might have been sent. In general, if any part of the data to be sent, including the address of any buffer list or buffer-list entry, is found to be not valid (cannot be referenced) when VTAM tries to send it, SEND fails with (RTNCD,FDB2)= (X'14',X'1E'). VTAM verifies that the data address is read/write capable.

VTAM does not verify the data address area if you use the authorized path facility described in Operating system facilities. The application program is responsible for terminating the chain if one has begun.