*COMDECK  CCLSCS
          TITLE  CCLSCS  -  SKIP CONTROL STATEMENTS 
**        CCLSCS  -  SKIP CONTROL STATEMENTS
* 
*         SCS WILL SKIP CONTROL CARDS UNTIL A POSSIBLE
*         TERMINATOR IS FOUND OR UNTIL THE SKIP COUNT IS
*         EXHAUSTED.
*         NOTE - SCS DOES NOT COMPARE THE LAB OF A POSSIBLE 
*         TERMINATOR.  FOR EXAMPLE, IF THE TERMINATOR IS AN 
*         ENDIF SCS WILL SKIP TO THE NEXT ENDIF.
* 
*         EXIT   X5 = 0 IF OK ELSE X5=1 
  
 CCLSCS   SUBR   =
 SCS1     BSS 
          MX7    1
          MX6    0
          SA7    CCSKIP      SKIPPING IN PROCESS. 
          SA6    CSBUF-1
          SA6    CSBUFOV
          RJ     CCLCCN      CONTROL CARD, NEXT 
  
          ZR     X5,SCS3     IF CARD WAS READ 
  
*         ALL CARDS HAVE BEEN SKIPPED.  ISSUE MESSAGE AND 
*         RETURN IF THE CONTROL STATEMENT FILE IS NOT 
*         A PROCEDURE.  OTHERWISE, DO A REVERT,ABORT
  
          SA2    SNVPNL 
          SX0    MSG174      ASSUME JOB FILE
          ZR     X2,SCS2     IF PNL=0, JOB FILE 
  
          SX0    MSG175      IN PROCEDURE 
 SCS2     BSS 
          LX0    18 
          SX3    MSG120      $ALL CARDS SKIPPED$
          BX3    X0+X3       ADD WORD $ENDRUN$  OR $REVERT$ 
          RJ     =XSTRMSG 
  
          SA2    SNVPNL 
          SX5    1           POSSIBLE ERROR CODE
          ZR     X2,CCLSCS   EXIT IF NOT IN PROCEDURE 
  
*         EXECUTE REVERT, ABORT 
  
*         SINCE CCL ADDS THE CARD -REVERT,ABORT.CCL AS THE LAST 
*         STATEMENT IN THE PROCEDURE FILE, BACKSPACE AND EXECUTE IT 
  
 OSSC2    IFEQ   HOST,SC2 
          SX7    40B
          SA7    CCNADR      CALL WORD FOR CONTRLC
          CONTRLC  CCNADR 
          SX7    40B
          SA7    CCNADR 
          CONTRLC  CCNADR    SECOND BACKSPACE GETS CARD 
 OSSC2    ENDIF 
  
 OSNBE    IFEQ   HOST,NOSBE 
          MX7    0
          SA7    CCNADR      CLEAR CALL WORD
          CONTRLC  CCNADR,BKSP
 OSNBE    ENDIF 
  
 OSNOS    IFEQ   HOST,NOS 
          SA4    =L*$REVERT,AB*                                          CL0104 
          SA5    =L*ORT.CCL*                                             CL0104 
          BX6    X4 
          BX7    X5 
          SA6    W.RACS 
          SA7    W.RACS+1 
  
*         EXECUTE CONTROL STATEMENT 
*         W.RACS CONTAINS CONTROL STATEMENT TO EXECUTE
*         AFTER EXCST EXECUTES CONTROL DOES NOT RETURN
  
          EXCST  W.RACS 
 OSNOS    ENDIF 
  
          SX5    1           INDICATE ALL CARDS SKIPPED 
          JP     CCLSCS      EXIT 
  
  
 SCS3     BSS 
          SA1    W.RACS 
          SB2    V.CCC       LENGTH OF CONTROL STATEMENT
          RJ     =XSTRFZB 
  
          SA2    SCATBF1
          MX2    0               CLEAR HEADER 
          RJ     =XSTRUPS 
          SA2    SCATBF1
          RJ     =XSTRDTC 
          SA2    SCATBF1
          RJ     CCLASV 
  
*         COMPARE THE VERB OF THIS CARD WITH THE POSSIBLE TERMINATORS.
*         IF THIS VERB IS NOT A SKIP TERMINATOR CONTINUE SKIPPING.
*                X5  = RETURN CODE FROM CCLASV, 0=OK
  
 SCS4     BSS 
          SA4    ANSVRB 
          SX7    B1          INDICATE SKIPPING CONTINUES
          NZ     X5,SCS6     IF ERR IN VERB/SEPARATOR 
  
          SB5    B0 
 SCS5     BSS 
          SA5    TERMT+B5 
          SB5    B1+B5
          BX0    X4-X5
          ZR     X5,SCS6     END OF TERMINATORS, CONTINUE SKIP
          ZR     X0,SCS8     EXIT SCS IF TERMINATOR FOUND 
          JP     SCS5        COMPARE NEXT TERMINATOR
  
 SCS6     BSS 
  
*                X7  = 0 INDICATES EXIT 
          SA1    CCPRSK 
          SA7    SCSCON      SAVE CONTINUE FLAG 
          ZR     X1,SCS7     IF SKIPPED CARDS NOT PRINTED 
  
          SX7    MOJD        SELECT JOB DAYFILE, NOT TERMINAL 
          SA7    MSGOPT 
          SX1    1           ADD SKIP PREFIX
          RJ     CCLDSB      (ONLY CARD IS AT RA+70)
  
 SCS7     BSS 
          SA2    SCSCON 
          NZ     X2,SCS1     CONTINUE SKIPPING
 SCS8     BSS 
          SX5    0
          JP     CCLSCS      EXIT 
 SCSCON   BSS    1
