In this
example, an application program known as APPLA sends two logical records
using two macroinstructions. On the first macroinstruction, an entire
logical record is sent, followed by the beginning of another. On the
second macroinstruction, the rest of the logical record is sent. In
addition, APPLA, at the same time, deallocates the conversation. The
conversation identifier is stored in CONVERID.
*
* PUT FIRST LOGICAL RECORD AND PART OF SECOND IN THE SEND BUFFER
* MAINTAINED FOR THE CONVERSATION. PUT ONLY 28 BYTES IN WITH THE
* CONTROL=SEND MACRO (COMPLETE 1ST RECORD AND FOUR BYTES OF
* THE SECOND RECORD). START BY BUILDING RECORDS IN CONTIGUOUS STORAGE.
*
MVC MSGBUFF(2),=X'0018' * INITIALIZE 1ST HEADER
MVC MSGBUFF+2(22),=C'THIS IS THE 1ST RECORD' * MOVE DATA
MVC MSGBUFF+24(2),=X'0019' * 2ND HEADER
MVC MSGBUFF+26(23),=C'THIS IS THE LAST RECORD' * MOVE DATA
LA 10,MSGBUFF * LOAD ADDRESS OF BUFFER AREA
*
APPCCMD CONTROL=SEND, X
QUALIFY=DATA, X
RPL=RPLA, X
AAREA=RPLAX, X
ACB=APPLA, X
CONVID=CONVERID, X
AREA=(10), X
RECLEN=28, X
OPTCD=SYN
*
LTR 15,15 * CHECK GENERAL RETURN CODE IN 15
BNZ BADGENRC * HANDLE NONZERO RETURN CODE
LTR 0,0 * CHECK CONDITIONAL COMPLETION
BNZ BADCOND * HANDLE NONZERO RETURN CODE
*
* RETURN CODES WERE GOOD. NOW FINISH SENDING SECOND RECORD AND
* IN ADDITION DEALLOCATE CONVERSATION.
*
LA 10,MSGBUFF+28 * GET START OF REMAINING RECORD
*
APPCCMD CONTROL=DEALLOC, X
QUALIFY=DATAFLU, X
RPL=RPLA, X
AAREA=RPLAX, X
ACB=APPLA, X
CONVID=CONVERID, X
AREA=(10), X
RECLEN=21, X
OPTCD=SYN
*
LTR 15,15 * CHECK GENERAL RETURN CODE IN 15
BNZ BADGENRC * HANDLE NONZERO RETURN CODE
LTR 0,0 * CHECK CONDITIONAL COMPLETION
BNZ BADCOND * HANDLE NONZERO RETURN CODE
*
* RETURN CODES WERE GOOD, THE DATA HAS BEEN SENT AND THE CONVERSATION
* DEALLOCATED.
*
•
•
•
CONVERID DS XL4 * CONVERSATION ID
MSGBUFF DS XL255 * STORAGE FOR DATA TO SEND
RPLA RPL AM=VTAM * RPL STORAGE
RPLAX ISTRPL6 * RPL EXTENSION STORAGE
APPLA ACB AM=VTAM,MACRF=LOGON,APPLID=APPLNAME * ACB STORAGE