Example of sending logical records

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