The application initiates the abnormal deallocation by
issuing either the APPCCMD CONTROL=DEALLOC or the APPCCMD CONTROL=DEALLOCQ
macroinstructions.
The APPCCMD CONTROL=DEALLOC macroinstruction should be
used when it is not desirable to wait for the arrival of information
from the partner before deallocating the conversation. VTAM® waits for information from the partner
before sending a negative response when the conversation is in receive
state and information has not been received from the partner to which
it can respond. In this case, the APPCCMD CONTROL=DEALLOC is returned
to the application program with error return codes. The application
program can reissue the macroinstruction or issue APPCCMD CONTROL=REJECT,
QUALIFY=CONV to abnormally end the conversation and session.
The APPCCMD CONTROL=DEALLOCQ macroinstruction should be
used when it is not desirable to reject the macroinstruction for this
situation, but it is desirable to wait for the arrival of information.
APPCCMD CONTROL=DEALLOCQ can result in deadlock situations if some
condition, such as a failed partner LU, prevents VTAM from receiving additional information.
A user who codes the APPCCMD CONTROL=DEALLOCQ macroinstruction on
existing application programs must verify that the program logic can
tolerate this possible hang situation.
The processing of these macroinstructions causes the LU's
send buffer to be flushed and an FMH-7 and any error log data to be
sent to the partner LU.
The APPCCMD CONTROL=DEALLOC and APPCCMD CONTROL=DEALLOCQ
macroinstructions include four types:
- QUALIFY=ABNDPROG
- QUALIFY=ABNDSERV
- QUALIFY=ABNDTIME
- QUALIFY=ABNDUSER
Each of these types is described in the following section.
- ABNDPROG
- Specifies
that an error makes it impossible to continue meaningful communication
over the conversation. It is issued for errors detected by the processing
threads in the application program that correspond to transaction
programs. An example of this type of error could be the receipt of
incorrect data on a CONTROL=RECEIVE macroinstruction. This type of
error causes a sense code of X'08640000' to be generated
in the FMH-7 used by VTAM in
processing the error. (See Sense codes for FMH-7 for
a list of FMH-7 sense codes.)
- ABNDSERV
- Specifies
that an LU services component has detected an error. This type of
error occurs when the application program has implemented an LU 6.2
function in addition to that provided by VTAM. For example, an application program might
implement mapped conversations. Errors relating to the application's
implementation would be service errors. If the errors were serious
enough to deallocate the conversation, the application program would
issue this QUALIFY variation. This type of error causes a sense code
of X'08640001' to be generated in the FMH-7 used by VTAM in processing the error. (See Sense codes for FMH-7 for a list of FMH-7 sense codes.)
- ABNDTIME
- Specifies
that the application program has not received expected information
within an application-determined length of time. This type of error
causes a sense code of X'08640002' to be generated in the
FMH-7 used by VTAM in processing
the error. (See Sense codes for FMH-7 for a list
of FMH-7 sense codes.) ABNDTIME can be used by the application program
to handle errors originating on its side of the conversation or when
it fails to receive information from a partner LU. Its primary intent
is to handle timing errors on the local side of a conversation. For
example, if an application program has been waiting for one of its
transaction programs to send data, and the wait exceeds the time limit,
it would use this type of deallocation to end the conversation.
- ABNDUSER
- Specifies
that the application program is ending the conversation and provides VTAM with a user-specified sense
code. The sense code must be valid for an FMH-7. The application program
must ensure that it is. An example of the type of error this is used
for would be the receipt of an FMH-5 with errors. (See Sense codes for FMH-7 for a list of FMH-7 sense codes.)