*DECK DB$RWTW 
          IDENT  DB$RWTW
          TITLE  DB$RWTW -- MOVE WORDS TO OUTPUT BUFFER, REWRITE TO RMS 
          COMMENT  REWRITE WORDS TO RMS 
          DATA   10L  DB$RWTW 
*#
* *   DB$RWTW - REWRITE WORDS TO RMS             PAGE  1
* *   R L MCALLESTER                             DATE  10/17/80 
* 
* DC  PURPOSE 
* 
*     COPY -LEN- WORDS FROM -WSA- TO THE OUTPUT BUFFER. 
*     INITIATE A REWRITE WHEN THE BUFFER REQUIRES DUMPING.
* 
* DC  ENTRY CONDITIONS
* 
* D   PARAMETERS
* 
*     -FET-                  LOCATION OF THE FILE FET 
*     -WSA-                  LOCATION OF THE WORKING STORAGE AREA 
*     -LEN-                  LENGTH OF THE WORKING STORAGE AREA 
* 
* D   ASSUMPTIONS 
* 
*     THE FET IS AN EIGHT WORD FET.  A NINTH WORD (FET+8) CONTAINS THE
*     CURRENT WORD ADDRESS. IT IS IN BITS 59-30.
* 
* DC  EXIT CONDITIONS 
* 
*     THE CURRENT WORD ADDRESS IS UPDATED TO REFLECT DATA TRANSFERRED 
*     INTO THE BUFFER.
* 
* D   PARAMETERS
* 
*     -FET-                  UNALTERED ON EXIT. 
*     -WSA-                  ADDRESS IS INCREMENTED TO REFLECT THE
*                            NUMBER OF WORDS TRANSFERRED TO THE BUFFER. 
*     -LEN-                  LENGTH IS ADJUSTED FOR REMAINING TRANSFER. 
* 
* DC  CALLING ROUTINES
* 
*     DB$JLCT                JOURNAL LOGGING OUTPUT CONTROLLER
*     DB$TRFW                TRANSACTION FILE WRITER
* 
* DC  CALLED ROUTINES 
* 
*     CIO=                   CALL CENTRAL I-O PROCESSOR 
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     IN POINTER IN THE FET 
*     FET CODE AND STATUS FIELD 
* 
* DC  DESCRIPTION 
* 
*     THE COMMON DECK COMCWTW PROVIDES THE BASIC LOGIC OF DB$RWTW.
*     THE PROCEDURE WTW= IS COMPILED USING REDEFINED VERSIONS OF THE
*     WRITE AND RECALL MACROS.
*     WRITE IS REDEFINED TO DO A REWRITE SO THE PREALLOCATED FILE 
*     ALLOCATION IS NOT DISTURBED.
* 
*     RECALL IS REDEFINED TO RETURN.  THIS PERMITS A NON-ERROR RETURN 
*     FROM WTW= WITH A NON-ZERO REMAINING TRANSFER LENGTH.
* 
*     THE CODE AT DB$RWTW ACCEPTS PARAMETERS IN THE SYMPL CALLING 
*     SEQUENCE AND RETURNS THE MODIFIED -WSA- AND -LEN- TO THE
*     CALLING SEQUENCE. 
* 
*     IF THE RECORD REQUEST/RETURN (RR) FIELD IS ZERO, THE CURRENT PRU
*     ORDINAL IS CALCULATED AND SET INTO IT.
* 
*     THE CURRENT WORD ADDRESS IS UPDATED TO REFLECT ADDITIONAL WORDS 
*     TRANSFERRED INTO THE BUFFER.
*#
  
          SST 
          ENTRY  DB$RWTW
          LIST   F
          LIST   X
          B1=1
  
 DB$RWTW  EQ   *+1S17 
          SB1    1
          SA2    X1          (X2) = LOCATION OF FET 
          SA5    A1+B1       (X5) = POINTER TO -WSA-
          SA3    A5+B1       (X3) = POINTER TO -LEN-
          SA1    X5          (X1) = LOCATION OF WSA   -WSA- 
          SA3    X3          (X3) = LENGTH OF WSA     -LEN- 
          SB6    X1          (B6) = -WSA- 
          SB7    X3          (B7) = -LEN- 
  
*         WTW=  INPUT PARAMETERS
* 
*         (B1) = 1
*         (X2) = -FET-
*         (B6) = -WSA-
*         (B7) = -LEN-
  
          RJ   WTW=          WRITE WORDS TO BUFFER
  
*         WTW= DOES NOT MODIFY A5, B1, X2 OR X5.
*         B6 AND B7 ARE ADJUSTED TO REFLECT THE DATA TRANSFERRED
*         TO THE BUFFER.
  
          SA3    A5+B1
          SA4    X3          RECOVER ORIGINAL LENGTH
          SX6    B6 
          SX7    B7 
          SA6    X5          RETURN REVISED WSA LOCATION
          SA7    X3          RETURN REVISED WSA LENGTH
          SA1    X2+8        (X1) = CWA BEFORE THE TRANSFER.
          IX4    X4-X7       (X4) = LENGTH OF DATA TRANSFERRED
          LX4    30 
          IX6    X1+X4       (X6) = CWA AFTER THE TRANSFER
          SA6    A1 
          EQ   DB$RWTW
          SPACE  3,42 
*CALL IOLIST
          TITLE  MACRO REDEFINITIONS AND DATA DEFINITIONS 
          PURGMAC  RECALL 
  
*         RECALL MACRO FOR WTW= 
  
 RECALL   MACRO 
 RCL      IF   -DEF,DCB=
          EQ     WTW= 
 RCL      ELSE
          RJ   =XRCL= 
 RCL      ENDIF 
          ENDM
          SPACE  5,15 
*         USE REWRITE INSTEAD OF WRITE MACRO
  
 WRITE    OPSYN  REWRITE
  
  
 QUAL$    EQU    1
*CALL COMCWTW 
          END 
