*DECK GETDR 
          IDENT     GET$R 
          COMMENT   CRM SQ GET R-RECORD PROCESSOR 
          LIST      C,F,X 
*#
*1CD  GET$R 
*0D   PURPOSE 
*0        PERFORM RECORD-TYPE-DEPENDENT PROCESSING ON R-TYPE RECORDS
*         FOR *GET$SQ*. 
*0D   CALL
*0                  SB3       OUT 
*                   SB5       RETURN-ADDRESS
*                   EQ        =YGET$R 
*0D   PARAMETERS
*0        A0        FIT ADDRESS.
*         B1        1.
*         B3        CIRCULAR BUFFER OUT POINTER.
*         B5        RETURN ADDRESS. 
*0D   ACTION
*0        GET ENTRY.
*0    (1) IF THIS RECORD IS DELETED (OR BEING SKIPPED IN RESPONSE TO
*         A *SKIP* REQUEST), BRANCH TO *SCANR* (THIS SECTION OF CODE
*         IN *GET$R* SEARCHES FROM ADDRESSES B3 TO B4 LOOKING FOR THE 
*         RECORD MARK CHARACTER. IT RETURNS THE NUMBER OF CHARACTERS
*         FOUND AND A FLAG INDICATING WHETHER OR NOT THE RECORD MARK
*         CHARACTER WAS FOUND. IT STOPS SEARCHING UPON THE OCCURRENCE 
*         OF THE RECORD MARK OR UPON REACHING THE ADDRESS SPECIFIED 
*         IN B4). IF THE RECORD MARK WAS NOT FOUND, BRANCH TO THE 
*         ADDRESS GTMR$SQ IN GET$SQ TO GET MORE 
*         CHARACTERS THEN RE-ENTER *SCANR* TO LOOK FOR THE RECORD MARK. 
*         CONTINUE UNTIL THE RECORD MARK IS FOUND.
*         WHEN THE RECORD MARK IS FOUND, UPDATE THE FIT FIELD BUFFER
*         CHARACTER COUNT (BCC) AND EXIT TO *GXIT$SQ* (IN *GET$SQ*) 
*         TO TERMINATE GET PROCESSING.
*0    (2) IF THIS RECORD IS NOT SKIPPED OR DELETED, BRANCH TO *SCANR* 
*         TO SEARCH FOR THE RECORD MARK CHARACTER. INCREMENT THE FIT
*         RECORD LENGTH (RL) BY NO. CHARS. FOUND BY *SCANR*.  IF MORE 
*         THAN MAXIMUM RECORD LENGTH (MRL) CHARACTERS WERE FOUND, SET 
*         THE GET ERROR NUMBER FIELD (GEN) TO INDICATE EXCESS DATA AND
*         SET THE *SCANR* RECORD-MARK-FOUND FLAG TO *FOUND*.
*0    (3) NOW SET REQUEST SIZE FIELD (RQS) TO *MRL* - *SCANR* CHARS.
*         (ZERO IF *SCANR* CHARS > *MRL*), SET THE PARAMETERS FOR 
*         *MOVE$RM*, AND BRANCH TO *MOVE$RM* TO TRANSFER DATA FROM
*         THE CIRCULAR BUFFER TO THE USER WORKING STORAGE AREA. 
*0    (4) UPON RETURN FROM *MOVE$RM*, WE CHECK TO SEE IF WE HAD FOUND 
*         THE RECORD MARK *SCANR*. IF NOT, BRANCH TO THE ADDRESS
*         GTMR$SQ IN GET$SQ TO GET MORE CHARACTERS, THEN
*         BRANCH BACK TO PARAGRAPH (2). IF SO, CHECK THE EXCESS DATA
*         FLAG (GEN); IF ZERO OR SET TO EXCESS DATA, BRANCH TO *GXIT$SQ*
*         TO TERMINATE GET PROCESSING; OTHERWISE, SET THE GET DELETE
*         BIT (DEL) AND BRANCH TO THE GET-MORE-CHARACTERS SECTION OF
*         PARAGRAPH (1).
*0D   REGISTERS USED
*0        A345,B23456,X1234567
*0D   OTHER CODE
*         PROGRAMS- MOVE$RM, GET$SQ 
*         MACROS-   F.RM, SAVE, RESTORE, SET.RM, ON.RM, INC.RM
*#
          SST 
          B1=1
 AAAAA    DATA      01010101010101010101B 
 FWRD.RM  MICRO     1,,/36B/
 XREG.RM  MICRO     1,, 0 
* CALL /SCANDR/ 
*CALL /SCANDR/
* CALL /GETDR/               /GETDR/  *COMDECK /GETDR/
*CALL /GETDR/ 
          END 
