*DECK DB$WAIO 
          IDENT  DB$WAIO
          TITLE  DB$WAIO - WA INPUT/OUTPUT ROUTINES 
          COMMENT  WORD ADDRESSABLE I/O ROUTINES
          DATA   10L  DB$WAIO 
*#
* *   DB$WAIO - WA INPUT/OUTPUT ROUTINES         PAGE  1
* *   J. JAN JANIK                               DATE  10/01/75 
  
* DC  PURPOSE 
  
*     TO INTERFACE SYMPL PROCS AND CRM FOR WA FILES.
  
* DC  ENTRY CONDITIONS
  
*     DB$WCLS (FIT,ERREXIT) - FILE IS OPEN
*     DB$WGET (FIT,WSA,RLW,WA,ERREXIT) - FILE IS OPEN 
*     DB$WOPN (FIT,ERREXIT) - FILE IS CLOSED
*     DB$WPUT (FIT,WSA,RLW,WA,ERREXIT) - FILE IS OPEN 
* 
*     FIT IS THE ARRAY NAME OF THE FIT, WSA IS THE ARRAY NAME OF THE
*     WORKING STORAGE AREA, RLW IS THE RECORD LENGTH IN WORDS, WA IS THE
*     WORD ADDRESS TO BE WRITTEN/READ TO/FROM, AND ERREXIT IS THE 
*     ADDRESS TO BE JUMPED TO BY CRM IF AN ERROR IS DETECTED OR 0.
* 
* DC  EXIT CONDITIONS 
  
*     DB$WCLS - FILE IS CLOSED AND REWOUND IF OPEN ON ENTRY 
*     DB$WGET - RLW WORDS FROM WA ARE TRANSFERED TO WSA 
*     DB$WOPN - FILE IS OPENED AND REWOUND IF CLOSED ON ENTRY 
*     DB$WPUT - RLW WORDS FROM WSA ARE TRANSFERED TO WA 
* 
* DC  CALLING ROUTINES
* 
*     THESE SERVICE ROUTINES ARE CALLED BY NUMEROUS ROUTINES IN 
*     CDCS AND IN THE DATABASE UTILITIES. 
* 
* DC  CALLED ROUTINES 
  
*     THE CRM ROUTINES TO OPEN, CLOSE, PUT AND GET WA FILES 
*#
          EJECT 
          ENTRY  DB$WCLS     CLOSE WA FILES 
          ENTRY  DB$WGET     GET FROM WA FILES
          ENTRY  DB$WOPN     OPEN WA FILES
          ENTRY  DB$WPUT     PUT TO WA FILES
* 
*         STATIC LOAD THE WA GET/PUT ROUTINES IN THE 0,0 OVERLAY
*         THE MACRO STLD.RM IS INCLUDED IN THE MODULE DB$SYMB INSTEAD 
*         OF DB$WAIO
*         IF IT WERE IN DB$WAIO IT WOULD CAUSE THE STATIC LOADING 
*         IN OTHER ROUTINES THAN CDCS2 AND CDCSBTF. 
* 
* 
 DB$WCLS  JP     *+400000B
          SA2    A1+1        PICK UP ERROR EXIT ADDR
          STORE  X1,EX=X2 
          CLOSEM   X1,DET,FILE    DET SO FIT FIELDS WILL BE RESET ON
*                                 NEXT OPEN 
          EQ   DB$WCLS
* 
* 
 DB$WGET  JP     *+400000B
          SB1    1
          SA2    A1+B1             PICK UP WSA
          SX2    X2          MASK OFF INFO IN THE LEFT MOST 42 BITS 
          SA3    A2+B1             PICK UP ADDR OF RL 
          SA4    A3+B1             PICK UP  ADDR OF WA
          SA3    X3                PICK UP RL IN WORDS
          SA5    A4+B1             PICK UP ERROR EXIT ADDR
          BX6    X3 
          LX6    3
          SA4    X4                PICK UP WA 
          LX3    1
          IX3    X6+X3             X3 = RL IN CHARACTERS
          GET    X1,X2,X3,X5,X4,,,WA
          EQ   DB$WGET
* 
* 
 DB$WOPN  JP     *+400000B
          SA2    A1+1        PICK UP ERROR EXIT ADDR
          STORE  X1,EX=X2 
          OPENM  X1,I-O,R,WA
          EQ   DB$WOPN
* 
* 
 DB$WPUT  JP     *+400000B
          SB1    1
          SA2    A1+B1             PICK UP WSA
          SX2    X2          MASK OFF INFO IN THE LEFT MOST 42 BITS 
          SA3    A2+B1             PICK UP ADDR OF RL 
          SA4    A3+B1             PICK UP  ADDR OF WA
          SA3    X3                PICK UP RL IN WORDS
          SA5    A4+B1             PICK UP ERROR EXIT ADDR
          BX6    X3 
          LX6    3
          SA4    X4                PICK UP WA 
          LX3    1
          IX3    X6+X3             X3 = RL IN CHARACTERS
          PUT    X1,X2,X3,X5,X4,,,WA
          EQ   DB$WPUT
          SPACE  3,10 
*CALL IOLIST
          END 
