*COMDECK  CCLCCF
          TITLE  CCLCCF  -  CONTROL CARDS, FIRST
**        CCLCCF  -  CONTROL CARD, FIRST OF STATEMENT 
* 
*         SCOPE 2 WILL PROCESS ALL CARDS OF A STATEMENT UNTIL 
*         A TERMINATOR IS FOUND.  SINCE CCL MUST EXAMINE ITS
*         STATEMENT THE CONTRLC MACRO IS USED TO BACKSPACE
*         THE CONTROL STATEMENT FILE AND REREAD THE FIRST CARD
*         OF THE STATEMENT INTO RA+70.
*         TO DETERMINE WHICH CARD IS THE FIRST CARD, CCLCCF COUNTS
*         THE PARAMETERS THE LOADER STORED BEGINNING AT RA+2. 
*         THEN THE PARAMETERS ON THE CARD IMAGE STORED AT RA+70 
*         ARE COUNTED.  IF THERE ARE NOT AS MANY PARAMETERS ON THE
*         CARD IMAGE THEN CCLCCF BACKSPACES TO THE PREVIOUS CARD
*         VIA CONTRLC.  THE FIRST CARD OF THE STATEMENT 
*          IS IN RA+70 WHEN THE SUM OF PARAMETERS FROM THE
*         CARDS EXCEEDS THE PARAMETERS AT RA+70 OR WHEN THE 
*         COUNTS ARE EQUAL AND THE FIRST STRING FROM THE CARD 
*         IS IN FACT THE VERB AND THE FIRST PARAMETER MERGED. 
* 
*         EXIT   - CARD IMAGE AT RA+70 IS THE FIRST 
*                    OF THIS STATEMENT. 
*                - THE CONTROL STATEMENT FILE IS POSITION SO
*                    THAT THE NEXT CARD OF THE STATEMENT
*                    WILL BE READ BY THE NEXT CONTRLC CALL. 
  
 OSSC2    IFEQ   HOST,SC2 
 CCLCCF   SUBR   =
  
*         TO COUNT THE PARAMETERS STORED AT RA+2 EXAMINE EACH 
*         WORD.  THE END OF THE LIST OF PARAMETERS IS INDICATED 
*         BY A ZERO WORD.  A SIMPLE COUNT OF THE NUMBER OF WORDS
*         HOWEVER IS NOT SUFFICIENT BECAUSE A PARAMETER MAY 
*         BE CONTINUED OVER MORE THAN ONE WORD.  CONTINUED
*         PARAMETERS ARE INDICATED BY THE LOWER FOUR BITS 
*         BEING ZERO. 
  
          SA5    W.RAPAR
          MX7    0
          MX0    -4 
          SA7    CCFCSP 
          SA7    CCDF 
          SA7    ANSMDE      PROCESS LITERALS IN BEGIN CALL 
 CCF1     BSS 
          BX1    -X0*X5 
          BX6    X5 
          SA5    A5+B1
          ZR     X1,CCF2     IF CONTINUED PARAMETER OR END OF LIST
  
          SX7    X7+1        INCREMENT PARAMETER COUNT
 CCF2     BSS 
          NZ     X6,CCF1     IF NOT AT END OF LIST
          ZR     X7,CCLCCF   EXIT IF NO PARAMETERS, ONLY ONE CARD 
  
          SA7    CCFPAR      STORE COUNT
*         NOW EXAMINE THE FIRST STRING ON THE CARD.  IF 
*         IT IS EQUAL TO THE PARAMETER AT RA+2 THEN SET 
*         THE FLAG CCFEQU FOR LATER USE.
  
 CCF3     BSS 
          SA1    W.RACS 
          SB2    V.CCC
          RJ     =XSTRFZB 
          SA2    SCATBF1
          MX2    0           CLEAR HEADER 
          RJ     =XSTRUPS 
          SA2    SCATBF1
          RJ     =XSTRDTC 
  
          SA2    SCATBF1
          RJ     =XSTRANS 
  
          SA4    ANSSTR 
          SA2    W.RAPAR
          MX7    42 
          BX4    X4*X7
          BX2    X2*X7
          BX0    X2-X4       COMPARE SEVEN CHARACTERS 
          MX7    0
          NZ     X0,CCF4     IF NOT EQUAL 
          SX7    B1 
 CCF4     BSS 
          SA7    CCFEQU 
          JP     CCF6 
  
 CCF5     BSS 
          SA2    SCATBF1
          RJ     =XSTRANS 
  
 CCF6     BSS 
          SA3    ANSSEP 
          SA4    CCFCSP 
          SX0    X3-1R. 
          SX7    X4+B1
          SA7    A4          CCFCSP 
          SX1    X3-1R) 
          ZR     X0,CCF7     IF  .
          ZR     X1,CCF7     IF  )
  
          PL     X3,CCF5     IF VALID SEPARATOR 
  
*         RESET CCFCSP BECAUSE THIS IS ACTUALLY PAST END OF CARD
  
          SX7    X4 
          SA7    CCFCSP 
 CCF7     BSS 
          SA2    CCFPAR 
          IX0    X2-X7
          NG     X0,CCLCCF   EXIT IF PARAMETERS FOUND 
  
          NZ     X0,CCF8     BACKSPACE IF NOT ENOUGH PARAMETERS FOUND 
  
*         COUNT OF PARAMETERS AT RA+2 EQUALS THE COUNT OF PARAMETERS
*         FOUND.  THE VERB MAYBE ON A CARD BY ITSELF OR THE SEPARATOR 
*         FOLLOWING THE VERB MAY BE A BLANK.  IF BLANK, STRANS WOULD
*         HAVE MERGED THE VERB AND THE FIRST PARAMETER. 
*         IF THE FIRST STRING ON THIS CARD
*         WAS EQUAL TO THE PARAMETER AT RA+2 THEN THE VERB IS ON
*         THE PRECEDING CARD. 
  
          SA1    CCFEQU 
          ZR     X1,CCLCCF   VERB SEPARATOR MUST BE BLANK 
  
  
  
*         BACKSPACE TO NEXT CARD
  
 CCF8     BSS 
          SX7    40B
          SA7    CCFADR 
          CONTRLC CCFADR     BACKSPACE
  
          SX7    40B         BACKSPACE
          SA7    CCFADR 
          CONTRLC CCFADR
  
          SA1    CCFADR 
          SX0    X1-20B 
          ZR     X0,CCLCCF   EXIT IF AT BEGINNING 
  
          SX7    10B
          SA7    CCFADR 
          CONTRLC CCFADR     READ 
  
*         CCLCCN WILL USE THE VALUE OF CCDF TO DETERMINE
*         HOW MANY OF THE CARDS OF THE STATEMENT WERE ISSUED TO 
*         THE DAYFILE BY THE SCOPE 2 LOADER.  IF MORE CARDS 
*         ARE IN THE STATEMENT THEN CCLCCN WILL PRINT THEM
*         ON THE DAYFILE FILE WHEN THEY ARE READ. 
  
          SA1    CCDF 
          SX7    X1-1        DECREMENT, PREVENT CARD TO DAYFILE AGAIN 
          SA7    CCDF 
          JP     CCF3 
  
 CCFADR   BSS    1           WORD FOR CONTRLC MACRO 
 CCFCSP   BSS    1           COUNT OF PARAMETERS FOUND ON CARD IMAGES 
 CCFEQU   BSS    1           FLAG, 1=FIRST STRING=STRING AT RA+70 
 CCFPAR   BSS    1           COUNT OF PARAMETERS AT RA+70 
  
 OSSC2    ENDIF 
