z/OS Communications Server: SNA Programmer's LU 6.2 Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Example of using any-mode RECEIVEs

z/OS Communications Server: SNA Programmer's LU 6.2 Guide
SC27-3669-00

In this example, an application program known as APPLA is receiving data with an any-mode RECEIVE. After it receives the data, it moves the data into a buffer contained in a control block used by the application program to represent a conversation. (The control block is one in a chain of conversation blocks. The application program uses the returned conversation identifier to find the proper block.) The application program then issues another any-mode RECEIVE.
*
         APPCCMD CONTROL=RECEIVE,                                      X
               QUALIFY=ANY,                                            X
               RPL=RPLA,                                               X
               AAREA=RPLAX,                                            X
               ACB=APPLA,                                              X
               AREA=RECAREA,                                           X
               AREALEN=255,                                            X
               CONMODE=CS,                                             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. FIND THE CONVERSATION BLOCK AND MOVE DATA.
*
         LA    10,RPLA             * LOAD RPL ADDRESS
         USING IFGRPL,10           * ESTABLISH ADDRESSABILITY
         LA    9,RPLAX             * LOAD RPL EXTENSION ADDRESS
         USING ISTRPL6X,9          * ESTABLISH ADDRESSABILITY
         L     8,BLKCHAIN          * GET START OF BLOCK CHAIN
         USING BLKMAP,8            * ESTABLISH ADDRESSABILITY
SEARCHLP LTR   8,8                 * IF CHAIN ZERO, BLOCK NOT FOUND
         BZ    ERROR               * HANDLE ERROR IF SO
         CLC   RPL6CNVD,BLKCNVD    * RIGHT CONVERSATION BLOCK?
         BE    STOREBUF            * IF SO, TRANSFER DATA
         L     8,BLKNEXT           * GET NEXT IN CHAIN
         B     SEARCHLP            * GO AND CHECK NEW POINTER VALUE
STOREBUF MVC   BLKBUF(255),RECAREA * MOVE DATA FROM RECEIVE BUFFER
         MVC   BLKBUFLN,RPLRLEN    * STORE LENGTH OF RECEIVED DATA
               •
               •
               •
BLKCHAIN DS    A                   * POINTER TO CHAIN OF BLOCKS
RECAREA  DS    XL255               * RECEIVE BUFFER
RPLA     RPL AM=VTAM               * RPL STORAGE
RPLAX    ISTRPL6                   * RPL EXTENSION STORAGE
APPLA    ACB AM=VTAM,MACRF=LOGON,APPLID=APPLNAME * ACB STORAGE
               •
               •
               •
BLKMAP   DSECT
BLKCNVD  DS    XL4                 * CONVERSATION ID
BLKNEXT  DS    A                   * NEXT IN CHAIN
BLKBUFLN DS    XL4                 * LENGTH OF DATA IN BUFFER
BLKBUF   DS    XL255               * CONVERSATION BUFFER

Once the application program has finished receiving data on the conversation, the conversation can be returned to continue-any state by using the CONMODE operand or by using the RESETRCV macroinstruction.

This example could be coded as follows:
*
RECLOOP APPCCMD CONTROL=RECEIVE,                                   X
                QUALIFY=SPEC,                                      X
                RPL=RPLA,                                          X
                AAREA=RPLAX,                                       X
                ACB=APPLA,                                         X
                CONVID=(8),                                        X
                AREA=RECAREA,                                      X
                AREALEN=255,                                       X
                FILL=LL,                                           X
                CONMODE=CS,                                        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, CHECK WHAT-RECEIVED INDICATOR.
*
 
       LA       9,RPLAX              * LOAD RPL EXTENSION ADDRESS
       USING    ISTRPL6X,9           * ESTABLISH ADDRESSABILITY
       BAL      14,PROCDATA          * BRANCH TO HANDLE RECEIVED DATA
       TM       RPL6RCV1,RPL6WDAC    * CHECK DATA COMPLETE INDICATOR
       BNO      RECLOOP              * IF DATA LEFT, DO ANOTHER RECEIVE
*
 
* DATA ALL RECEIVED.  RESET CONTINUATION MODE
*
 
  APPCCMD CONTROL=RESETRCV,
          RPL=RPLA,                                              X
          AAREA=RPLAX,                                           X
          ACB=APPLA,                                             X
          CONVID=(8),                                            X
          CONMODE=BUFFCA,                                        X
          OPTCD=SYN
*
 
  LTR      15,15                  * CHECK GENERAL RETURN CODE IN 15
  BNZ      BADGENRC               * HANDLE NONZERO RETURN CODE
  LTR      0,0                    * CHECK CONDITIONAL COMPLETION
  BNZBAD   COND                   * HANDLE NONZERO RETURN CODE
 
*
* RETURN CODES WERE GOOD, CONTINUATION MODE RESET.
*
                     •
                     •
                     •
  RECAREA DS     XL255             * RECEIVE BUFFER
  RPLA    RPL AM=VTAM              * RPL STORAGE
  RPLAX   ISTRPL6                  * RPL EXTENSION STORAGE
  APPLA   ACB AM=VTAM,MACRF=LOGON,APPLID=APPLNAME * ACB STORAGE

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014