COMPRCS 
COMMON
          CTEXT  COMPRCS - READ CONTROL STATEMENT.
 RCS      SPACE  4
          IF     -DEF,QUAL$,1 
          QUAL   COMPRCS
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 RCS      SPACE  4
***       RCS - READ CONTROL STATEMENT. 
*         G. R. MANSFIELD.  70/10/06. 
 RCS      SPACE  4
*                RCS READS THE NEXT CONTROL STATEMENT TO A PP BUFFER. 
*         PP BUFFER MUST BE 9*5 WORDS LONG. 
*         THE CONTROL STATEMENT BUFFER IN NEGATIVE FL 
*         WILL BE REFILLED IF NECESSARY.
* 
*         ENTRY  (SP - SP+4) = CONTROL STATEMENT POINTER. 
*                *STMT* = ADDRESS OF PP BUFFER. 
* 
*         EXIT   (A) = (T4) = BUFFER INDEX OF CONTROL STATEMENT.
*                STATEMENT STORED STARTING AT *STMT* AND CONTINUING TO
*                A 0000 BYTE.  THE REST OF THE STATEMENT BUFFER WILL
*                BE CLEARED.
*                (A) .LT. 0 IF MASS STORAGE ERROR.
* 
*         USES   T1 - T7, CM - CM+4, CN - CN+4. 
* 
*         CALLS  RNS. 
* 
*         MACROS ENDMS, NFA, SETMS. 
  
  
 RCS      SUBR               ENTRY/EXIT 
 RCS1     LDC    STMT        SET PP ADDRESS 
          STD    T1 
          LDD    SP+3        SET STATEMENT INDEX
          STD    T2 
          STD    T4 
  
*         READ FIRST 90 CHARACTERS OF CONTROL CARD
*         FROM CONTROL CARD BUFFER. 
  
 RCS2     LDD    T1          SET WORD ADDRESS 
          STM    RCSA 
          LDD    T2          CHECK BUFFER STATUS
          LMD    SP+4 
          ZJN    RCS5        IF BUFFER EMPTY
          NFA    T2,R        READ WORD
          CRM    *,ON 
 RCSA     EQU    *-1
          SOD    T2          ADVANCE STATEMENT ADDRESS
          LDN    5           ADVANCE PP ADDRESS 
          RAD    T1 
          LMC    STMT+55
          ZJN    RCS3        IF 90 CHARACTERS 
          LDM    -1,T1
          NJN    RCS2        IF NOT END OF STATEMENT
          UJN    RCS6        PROCESS END OF STATEMENT 
  
*         IGNORE REMAINING PORTION OF CONTROL CARD
*         (IGNORE CHARACTERS 81-160). 
  
 RCS3     LDD    T1          SET COUNTER
          STD    T3 
          SBN    5           RESET CHARACTER COUNT
          STD    T1 
          LDM    4,T1 
          ZJN    RCS6        IF END OF STATEMENT
 RCS4     LDD    T2          CHECK BUFFER STATUS
          LMD    SP+4 
 RCS5     ZJN    RCS8        IF BUFFER EMPTY
          NFA    T2,R        READ WORD
          CRD    CM 
          SOD    T2          ADVANCE STATEMENT ADDRESS
          LDD    CM+4 
          ZJN    RCS6        IF END OF STATEMENT
          LDN    5
          RAD    T3 
          LMC    STMT+120 
          NJN    RCS4        IF NOT 160D CHARACTERS 
 RCS6     AOD    SP+2        ADVANCE CONTROL CARD COUNT 
          SHN    -14
          RAD    SP+1 
 RCS7     LDN    0           CLEAR REMAINDER OF STATEMENT BUFFER
          STI    T1 
          AOD    T1 
          LMC    STMT+55
          NJN    RCS7        IF NOT END OF BUFFER 
          LDD    T2          SET NEW STATEMENT INDEX
          STD    SP+3 
          LDD    T4          CM BUFFER INDEX OF CONTROL STATEMENT 
          LJM    RCSX        RETURN 
  
*         CHECK STATUS OF BUFFER. 
  
 RCS8     LDD    SP+1 
          SHN    6
          MJN    RCS7        IF EOR 
          LDD    CP          FETCH FST INFORMATION
          ADN    CSSW 
          CRD    CN 
  
*         MOVE CURRENT STATEMENT TO START OF BUFFER.
  
          LDD    SP+3        SET CURRENT STATEMENT WORD COUNT 
          SBD    T2 
          SBN    10 
          MJN    RCS9        IF LESS THAN 80 CHARACTERS 
          LDN    0
 RCS9     ADN    10 
          STD    CN+4 
          LDC    CSBN        SET FIRST STATEMENT INDEX
          STD    SP+3 
          SBD    CN+4 
          STD    SP+4 
          LDD    CN+4 
          ZJN    RCS10       IF NO CURRENT STATEMENT
          NFA    SP+3,R      STORE CURRENT STATEMENT
          CWM    STMT,CN+4
  
*         RELOAD STATEMENT BUFFER.
  
 RCS10    LDD    CN          SET EST ORDINAL
          LPC    777
          STD    T5 
          LDD    CN+2        SET TRACK
          NJN    RCS11       IF FILE DECLARED 
          LJM    RCS15       SET EOR STATUS 
  
 RCS11    STD    T6 
          LDD    CN+3        SET SECTOR 
          STD    T7 
          SETMS  IO,(NS)
          LDC    BFMS        READ NEXT SECTOR 
          RJM    RNS
          PJN    RCS13       IF NO ERRORS 
          SHN    21-12
          PJN    RCS12       IF RECOVERABLE ERROR 
          LDC    4000        SET EOR
          STD    SP+1 
          LDD    SP+3        SET BUFFER EMPTY 
          STD    SP+4 
 RCS12    LDD    CP          STORE STATEMENT POINTER
          ADN    CSPW 
          CWD    SP 
          LDN    0           SPECIFY EMPTY COMMAND BUFFER 
          STM    STMT 
          LCN    0           SPECIFY ERROR
          LJM    RCSX        RETURN 
  
 RCS13    ENDMS 
          LDD    T6          UPDATE TRACK 
          STD    CN+2 
          LDD    T7          UPDATE SECTOR
          STD    CN+3 
          LDD    T1 
          ZJN    RCS15       IF NO DATA READ
          NFA    SP+4,R      STORE CONTROL STATEMENTS 
          CWM    BFMS+2,T1
          LDD    SP+4        UPDATE STATEMENT LIMIT 
          SBD    T1 
          STD    SP+4 
          LDD    T1          CHECK FOR EOR
          SHN    21-6 
          MJN    RCS16       IF NOT EOR 
 RCS15    LDC    4000        SET EOR
          RAD    SP+1 
 RCS16    LDD    CP          STORE STATEMENT POINTER
          ADN    CSPW 
          CWD    SP 
          ADN    CSSW-CSPW   STORE FST ENTRY
          CWD    CN 
          LJM    RCS1        CONTINUE PROCESSING
          SPACE  4
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 RCS      EQU    /COMPRCS/RCS 
 QUAL$    ENDIF 
          ENDX
