*DECK DB$RNRD 
          IDENT  DB$RNRD
          TITLE  DB$RNRD  -  RANDOM READ / RANDOM WRITE 
          COMMENT  RANDOM READ/WRITE RECORD 
          DATA   10L  DB$RNRD 
*#
* *   DB$RNRD - RANDOM READ A RECORD             PAGE  1
* *   BOB MCALLESTER                             03/30/84 
* 
* DC  PURPOSE 
* 
*     READ A CIO RECORD WITH RECALL 
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
* 
*     LOC(FET)
*     LOC(WSA)
*     NUMBER WORDS IN READ BUFFER 
*     PRU NUMBER FOR START OF READ
* 
* DC  DESCRIPTION 
* 
*     SET FIRST, IN, OUT, LIMIT FIELDS IN FET.
*     SET PRU ADDRESS FIELD IN FET. 
*     ISSUE CIO READSKP MACRO WITH RECALL.
*     RETURN. 
*#
          SPACE  1,10 
          ENTRY  DB$RNRD
DB$RNRD   EQ   *+1S17 
          SB1    1
          SA2    A1+B1
          SA3    A2+B1
          SA5    A3+B1
          MX0    42          (X0) = MASK
          SA1    X1          (X1) = ADDRESS FET 
          SA2    X2          (X2) = ADDRESS WSA 
          SA3    X3          (X3) = NUMBER WORDS
          SA5    X5          (X5) = PRU NUMBER OF BLOCK 
          BX6    X5 
          SA6    X1+6        PRU NUMBER FOR REWRITE IN FET AT LFN+6 
  
          SA4    X1+B1       (X4) = FIRST WORD FROM FET 
          BX4    X0*X4
*                            FIRST = WSA
          IX6    X2+X4       ADD FIRST TO FIRST WORD
          SA6    A4          STORE FIRST WORD 
          IX7    X2+X3       (X7) = WSA + WORDS 
          SX6    X2          (X6) = WSA 
          SA6    A6+B1       SET IN TO WSA
          SA6    A6+B1       SET OUT TO WSA 
          SX7    X7+B1       LIMIT = WSA+WORDS+1
          SA5    A6+B1       (X5) = LIMIT WORD FROM FET 
          BX5    X0*X5
          IX7    X7+X5       ADD LIMIT TO LIMIT WORD
          SA7    A5          STORE LIMIT WORD 
          READSKP X1,0,R
          EQ   DB$RNRD
          SPACE  4,12 
*#
* *   DB$RNFI - RANDOM FILE INITIALIZATION       PAGE  1
* *   BOB MCALLESTER                             03/30/84 
* 
* DC  PURPOSE 
* 
*     WRITE ONE GARBAGE RECORD TO INITIALIZE THE FILE.
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
* 
*     LOC(FET)
* 
* DC  DESCRIPTION 
* 
*     WRITE ONE RECORD ON THE FILE AS A SEQUENTIAL FILE.
*     THEN SUBSEQUENT RANDOM REWRITES CAN BE DONE WITHOUT GETTING 
*     THE DIAGNOSTIC - "RANDOM ADDRESS NOT ON FILE".
*#
          SPACE  1,10 
          ENTRY  DB$RNFI
DB$RNFI   EQ   *+1S17 
          SB1    1
          SA1    X1          (X1) = ADDRESS FET 
          MX0    42          (X0) = MASK
          SX6    63 
          SA5    X1+B1       (X5) = FIRST WORD IS SAVED 
          IX7    X6+X6
          SA6    A5          FIRST = 63, WITHOUT R, EP, LEN ETC.
          SA7    A6+B1       IN = 126 
          SA6    A7+B1       OUT = FIRST
          SX7    X7+B1       LIMIT = 127
          SA3    A6+B1       READ LIMIT WORD
          BX3    X0*X3
          IX7    X7+X3
          SA7    A3 
          WRITER X1,R        WRITE ONE GARBAGE RECORD 
          BX6    X5 
          SA6    A5          RESTORE FET WORD ONE (FIRST) 
          EQ   DB$RNFI
          END 
