*DECK,PROCS 
          IDENT  PROCS
          TITLE  PROCS - I/O SUBROUTINES FOR INTERMEDIATE FILES 
          COMMENT  PROCS - I/O SUBROUTINES FOR INTERMEDIATE FILES 
          SST 
          LIST   F,X
          SPACE  4
**        PROCS - I/O SUBROUTINES FOR INTERMEDIATE FILES
* 
*         CONTAINS- 
*                FA=SET - SET FILE TABLES 
*                GETSQ - GET FROM A SEQUENTIAL FILE 
* 
*                FOR NON-CRM I/O- 
* 
*                CIO= - MAKE CIO REQUESTS 
*                RDH= - READ CODED LINE, -H- FORMAT (READH) 
*                RDW= - READ WORDS TO WORKING BUFFER  (READW) 
*                WTC= - WRITE CODED LINE, -C- FORMAT  (WRITEC)
*                WTW= - WRITE WORDS FROM WORKING BUFFER.  (WRITEW)
* 
*                FOR CRM I/O- 
* 
*                FA=CLO - CLOSE FILE (CLOSE)
*                FA=EOF - WRITE END-OF-FILE (WRITEF)
*                FA=EOR - WRITE END-OF-RECORD (WRITER)
*                FA=FLSH - FLUSH OUT HOLDING BUFFER 
*                FA=OPE - OPEN FILE (OPEN)
*                FA=RDH - READ CODED LINE, -H- FORMAT (READH) 
*                FA=RDW - READ WORDS TO WORKING BUFFER (READW)
*                FA=RWX - REWIND FILE (REWIND)
*                FA=WTC - WRITE CODED LINE, -C- FORMAT (WRITEC) 
*                FA=WTW - WRITE WORDS FROM WORKING BUFFER (WRITEW)
* 
          SPACE  4
          ENTRY  FA=SET 
  
  
 #RM      IFEQ   CP#RM,0
          ENTRY  CIO= 
          ENTRY  RDH= 
          ENTRY  RDW= 
          ENTRY  WTC= 
          ENTRY  WTW= 
 #RM      ELSE
          ENTRY  FA=CLO 
          ENTRY  FA=EOF 
          ENTRY  FA=EOR 
          ENTRY  FA=FLSH
          ENTRY  FA=OPE 
          ENTRY  FA=RDH 
          ENTRY  FA=RDW 
          ENTRY  FA=RWX 
          ENTRY  FA=WTC 
          ENTRY  FA=WTW 
 #RM      ENDIF 
          TITLE  GETSQ - GET FROM A SEQUENTIAL FILE 
*         GETSQ - GET FROM A SEQUENTIAL FILE
* 
*         THIS ROUTINE READS A RECORD FROM A CIO BUFFER INTO A WORKING
*         STORAGE BUFFER.  IT IS USUALLY CALLED FROM THE SYMPL INTERFACE
*         ROUTINES GTXXX.  THE CALLER MUST PLUG A JUMP INTO GETSQB. 
*         ROUTINE FIRST DOES A READ TO FIND THE NUMBER OF WORDS IN THE
*         RECORD THEN READS IN THE RECORD 
* 
*         INPUT-
*                A0 = FET ADDRESS 
*                A1 = FWA OF APLIST 
*                X1 = FWA OF WORKING STORAGE BUFFER 
*                B1 = 1 
*                APLIST-
*                WORD1 = FWA OF WORKING STORAGE BUFFER
*                WORD2 = ADDRESS OF NUMBER OF WORDS IN BUFFER 
*                WORD3 = ADDRESS OF END OF DATA EXIT
* 
  
          ENTRY  GETSQA,GETSQB
 GETSQA   BSS    0
          SA5    A1          SAVE APLIST POINTER AROUND READW 
          READW  A0,NWDS,B1  NUMBER OF WORDS ON RECORD
          NZ     X1,G.SQDX   IF END OF DATA 
          SA3    NWDS        NUMBER OF WORDS IN RECORD
          BX0    X3          SAVE AROUND READW CALL 
          READW  A0,X5,X3    READ IN RECORD 
          NZ     X1,G.SQDX   IF END OF DATA 
          BX7    X0 
          SA2    A5+B1       ADDRESS OF NWDS
          SA7    X2          RETURN NWDS TO CALLER
 GETSQB   BSS    1           RETURN - MUST BE PLUGGED BY CALLING ROUTINE
  
*         EOR/EOF ON FILE.  CALCULATE NO OF WORDS READ AND TAKE END OF
*         DATA EXIT 
  
 G.SQDX   BSS    0
          SA2    A5+2        CALLER SPECIFIED END-OF-DATA EXIT
          SB7    X2 
          JP     B7          TAKE END OF DATA EXIT
          SPACE  4
 NWDS     DATA   0           NUMBER OF WORDS IN RECORD TO READ IN 
  
 #RM      IFEQ   CP#RM,0
*CALL COMCCIO 
*CALL COMCRDH 
*CALL COMCRDW 
*CALL COMCWTC 
*CALL COMCWTW 
 #RM      ELSE
*CALL COMCMVE 
*CALL FA=CLO
*CALL FA=EOF
*CALL FA=EOR
*CALL FA=FLSH 
*CALL FA=OPE
*CALL FA=RDH
*CALL FA=RDW
*CALL FA=RWX
*CALL FA=WTC
*CALL FA=WTW
 #RM      ENDIF 
*CALL FA=SET
          END 
