*COMDECK  COMINIT 
          TITLE  COMINIT - INITIALIZATION AND VERB PROCESSING 
          USE    0
*         EXECUTION FOR ALL VERBS IS INITIATED AT THIS POINT.  FIRST
*         PERFORM SOME HOUSEKEEPING NEEDED FOR ALL VERBS.  THEN 
*         EXAMINE THE VERB TABLE AND INITIATE THE CODE TO PROCESS 
*         THE VERB SPECIFIED. 
  
          SB1    1           B1=1 THROUGHOUT CCL
          B1=1
  
*         FOR NOS AND NOS/BE OUTPUT THE CONTROL CARD FROM RA+70 
*         THE SDM= ENTRY POINT INDICATES TO THE SYSTEM THAT 
*         CCL WILL OUTPUT THE CONTROL CARD.  THIS IS REQUIRED 
*         BECAUSE OTHERWISE PORTIONS OF CERTAIN CONTROL 
*         CARDS AND SKIPPED CONTROL CARDS AND SKIP TERMINATOR 
*         CARDS WOULD BE PRINTED BOTH BY CCL AND BY NOS OR NOS/BE.
  
          SX7    0
          SA7    CSBUF-1
          SA7    CSBUFOV
          SA7    IACEX
          SA7    IACIPF 
          SA7    IACERR 
          SA7    IACDSF 
          SA7    IACIDP 
 OSSC2    IFEQ   HOST,SC2 
  
          RJ     =XCCLCCF    CONTROL CARD, FIRST
  
 OSSC2    ENDIF 
          RJ     =XCCLPRS    PRESET 
  
          SA5    SNVDSC 
          SA1    W.RACS      ADDRESS OF CONTROL STATEMENT 
          MX0    -N.SNVVAL
          BX6    -X0*X5 
          SB2    V.CCC       MAXIMUM LENGTH OF CONTROL STATEMENT
          SA6    CCPRSK 
          RJ     =XSTRFZB    FIND ZERO BYTE 
  
*                B2  = NUMBER OF CHARACTERS UP TO ZERO BYTE 
*                A1  = W.RACS 
  
          SA2    SCATBF1
          MX2    0           CLEAR HEADER 
          RJ     =XSTRUPS    UNPACK CONTROL CARD
          SA2    SCATBF1
          RJ     =XSTRDTC    DELETE TRAILING CHARACTERS 
  
 OSNOSBE  IFNE   HOST,SC2 
          JP     IIV1        SKIP CCLX SETUP
  
*         CCLX IS AN ENTRY USED FOR NOS AND NOSBE TEST PURPOSES.
*         EXECUTION OF A MODIFIED CCL BINARY IS POSSIBLE BY 
*         ATTACHING THE BINARY WITH THE LFN CCLX AND MAKING 
*         A PROGRAM CALL OF THE FORM  --  CCLX,VERB...
*         PROCESSING OF THE VERB BEGINS AT CCL1.
  
 CCL1     BSS    0           NOSBE CCLX,VERB... BEGINS HERE 
          SX7    VERBS       RESET PROCESSING VECTOR
          SA7    VRBADR 
 IIV1     BSS    0
 OSNOSBE  ENDIF 
          RJ     =XCCLASV    ASSEMBLE VERB
  
          SX3    MSG100      $ILLEGAL SEPARATOR FOLLOWS VERB$ 
          NZ     X5,EXIT1    IF VERB/SEPARATOR INVALID
  
          SA3    ANSSEP 
          SA2    ANSVRB      GET VERB FROM ASV
          MX7    42 
          SB7    VERBSL-1 
          SX6    X3-1R( 
  
 OSNBE    IFEQ   HOST,NOSBE 
          SX0    X3-1R
          ZR     X0,IIV2A    REPLACE BLANK WITH COMMA - NOSBE 
 OSNBE    ENDIF 
  
          NZ     X6,IIV3     IF SEPARATOR NOT LEFT PAREN. 
  
*         THE SEPARATOR WHICH FOLLOWS THE VERB (OR FOLLOWS THE
*         PROCEDURE NAME IF CALL BY NAME) MAY BE EITHER A LEFT
*         PARENTHESIS OR A COMMA.  ALL OTHER SEPARATORS IN THE CONTROL
*         STATEMENT MUST BE COMMAS.  TO MAKE ERROR CHECKING EASY, 
*         REPLACE ANY LEFT PARENTHESIS WITH A COMMA SO THAT LATER CHECKS
*         ONLY NEED CHECK FOR A COMMA.
  
  
 OSNBE    IFEQ   HOST,NOSBE 
 IIV2A    BSS    0
 OSNBE    ENDIF 
  
          SA5    SCATBF1
          SX6    1R,
          SA6    ANSSEP      CHANGE ( TO ,
          SA6    SCATBF1+X5  RESET CHARACTER IN SCATBF1 ALSO
 IIV3     BSS 
          SA5    VERBS+B7 
          BX6    X5*X7
          BX0    X2-X6
          SB7    B7-B1
          ZR     X0,IIV4     IF MATCH 
          GE     B7,B0,IIV3  IF MORE VERBS TO EXAMINE 
  
*         VERB IS UNKNOWN, ASSUME A CALL BY NAME PROCEDURE CALL 
*         SINCE BEGIN IS THE FIRST ENTRY IN THE TABLE THE 
*         CONTENTS OF X5 POINTS TO BEGIN
  
          JP     IIV5        DONT ECHO STATEMENT TO DAYFILE 
  
  
 IIV4     BSS 
          SX7    A5+
          SA3    VRBADR 
          SA7    A3 
          ZR     X3,IIV4A    IF VECTOR NOT SET ECHO TO DAYFILE
  
          SA5    X3+
          JP     IIV5        BEGIN, NAME CALL DO NOT GO TO DAYFILE
  
  
 IIV4A    BSS    0
 OSNOSBE  IFNE   HOST,SC2 
          SA4    =6LREVERT
          BX0    X6-X4
          NZ     X0,IIV4B    IF NOT REVERT ECHO TO DAYFILE
  
          SA2    ANSSEP 
          SX6    X2-1R, 
          ZR     X6,IIV5     IF PARAMETER ON REVERT DO NOT ECHO 
  
 IIV4B    BSS    0
          RJ     DCI         DISPLAY COMMAND IMAGE
  
 OSNOSBE  ENDIF 
  
          SA5    VRBADR      GET VERB ENTRY ADDR
          SA5    X5+
  
 IIV5     BSS    0
          SB7    X5 
          JP     B7          EXECUTE CODE FOR VERB
  
 VRBADR   BSSZ   1           STORAGE FOR VERB ENTRY VECTOR
  
 DCI      SPACE  4,15 
**        DCI - DISPLAY COMMAND IMAGE.
* 
*         DISPLAYS THE COMMAND IMAGE IN THE SYSTEM AND JOB DAYFILES 
*         UNLESS IT HAS ALREADY BEEN DISPLAYED.  THIS SUBROUTINE NEEDS
*         TO BE ACCESSIBLE FROM ALL MODULES.
* 
*         ENTRY  (W.RACS) = COMMAND IMAGE.
*                (CCDF) < 0 IF COMMAND ALREADY DISPLAYED. 
* 
*         EXIT   (CCDF) < 0.
* 
*         USES   X - 1, 6.
*                A - 1, 6.
* 
*         MACROS MESSAGE. 
  
 DCI      SUBR                     ENTRY/EXIT 
  
 OSNOSBE  IFNE   HOST,SC2 
          SA1    CCDF 
          NG     X1,DCIX           IF COMMAND ALREADY DISPLAYED 
          MX6    -1                INDICATE COMMAND DISPLAYED 
          SA6    A1 
          MESSAGE  W.RACS,6,R 
 OSNOSBE  ELSE
          MESSAGE  W.RACS,,R
 OSNOSBE  ENDIF 
  
          JP     DCIX              RETURN 
  
  
