*COMDECK  CCLASV
          USE    0
          TITLE  CCLASV  -  ASSEMBLE VERB 
**        CCLASV  -  ASSEMBLE VERB
* 
*         A CALL TO CCLASV WILL IN MOST CASES GET THE SAME
*         RESULT AS A DIRECT CALL TO STRANS.
*         HOWEVER THE DIFFERENT SYSTEMS HAVE SLIGHTLY DIFFERENT RULES 
*         FOR PROCESSING VERBS.  SCOPE 2 AND NOS/BE ALLOW A BLANK 
*         SEPARATOR TO FOLLOW VERBS.  NOS ALLOWS SPECIAL PREFIX 
*         CHARACTERS BEFORE THE VERB TO IDENTIFY LABELS OR TO 
*         INVOKE SPECIAL PROCESSING ($ OR /). 
*         SCOPE 2 AND NOS/BE HAVE A MINOR DIFFERENCE IN THE CASE
*         WHEN THE VERB IS FOLLOWED BY A BLANK AND THE NEXT 
*         NON-BLANK CHARACTER IS A SEPARATOR. 
*         IN SCOPE 2 IF THE BLANK IS FOLLOWED BY ANOTHER SEPARATOR
*         THE BLANK IS IGNORED AND THE FOLLOWING SEPARATOR IS ACCEPTED. 
*         IF NOS/BE FINDS A VERB WHICH IS FOLLOWED BY A BLANK AND THE 
*         FIRST NON-BLANK CHARACTER AFTER THE BLANK IS A
*         SEPARATOR, THEN NOS/BE ACCEPTS
*         THE BLANK AS THE SEPARATOR FOLLOWING THE VERB AND THE 
*         FIRST PARAMETER IS CONSIDERED NULL. 
*         NOS IGNORES ALL BLANKS AND EVEN ALLOWS BLANKS TO BE 
*         WITHIN A VERB.  THUS  VE RB EQUALS VERB.
* 
*         ENTRY   - NONE, IT WILL EXAMINE SCATBF1 
* 
*         EXIT   - VERB IN ANSVRB 
*                X5  = 0 IF OK, ELSE 1 IF ERROR 
* 
  
 CCLASV   SUBR   =
          MX6    0
          SA6    ANSVRB      INSURE NO VERB IS PRESENT
          SX7    B1 
          SA2    SCATBF1
 OSNOS    IFEQ   HOST,NOS 
          SA6    ANSMDE      IGNORE BLANKS
 OSNOS    ELSE
          SA7    ANSMDE 
 OSNOS    ENDIF 
  
 ASV1     BSS 
          RJ     =XSTRANS 
  
          SA3    ANSSEP 
          SA5    ANSCHR 
          NG     X3,ASV9     IF NOTHING LEFT ON CARD
  
 OSNOS    IFEQ   HOST,NOS 
          SA5    ANSNUM 
          ZR     X5,ASV4     IF NOT NUMERIC 
 ASV2     BSS 
          RJ     =XSTRANS 
  
 ASV4     BSS 
          SA4    ANSCHR 
          NZ     X4,ASV5     IF NOT NULL
          SA3    ANSSEP 
          SX0    X3-1R$ 
  
          SX7    X3-1R/ 
          ZR     X7,ASV2
          NZ     X0,ASV9     PREFIX MUST BE / OR $
  
          SX7    1
          SA7    PREFIX      PROC FROM SYSTEM LIBRARY ON NAME CALL
  
          RJ     =XSTRANS    GET VERB NAME
  
          SA3    ANSSEP 
          SA5    ANSCHR 
          NG     X3,ASV9     IF NOTHING LEFT IN LINE
          ZR     X5,ASV9     NO VERB
  
 OSNOS    ELSE
          ZR     X5,ASV1     IF NULL GET NEXT STRING
  
  
 OSNOS    ENDIF 
  
 ASV5     BSS 
  
          SA5    ANSSTR 
          MX7    0
          BX6    X5 
          SA7    ANSMDE      IGNORE BLANKS
          SA6    ANSVRB 
                                                                         CL0107 
*         WHEN SKIPPING, DO NOT NEED TO PROCESS STATEMENT FURTHER        CL0107 
                                                                         CL0107 
          MX5    0           EXIT FLAG = 0 IN CASE OF EXIT               CL0107 
          SA3    CCSKIP                                                  CL0107 
          ZR     X3,ASV6     NOT SKIPPING CARDS                          CL0107 
                                                                         CL0107 
          NZ     X6,CCLASV   EXIT - VERB IS IN ANSVRB                    CL0107 
                                                                         CL0107 
 ASV6     BSS 
  
          SA4    ANSSEP 
          SX5    0           EXIT FLAG= OK, IN CASE WE EXIT 
          SX7    X4-1R, 
          ZR     X7,CCLASV   EXIT IF SEPARATOR   ,
  
 NBESC2   IFNE   HOST,NOS 
          SX6    X4-1R
          ZR     X6,ASV7     IF BLANK 
 NBESC2   ENDIF 
  
          SX7    X4-1R) 
          SX6    X4-1R( 
          SX0    X4-1R. 
          ZR     X7,CCLASV   EXIT IF SEPARATOR   )
          ZR     X6,CCLASV   EXIT IF SEPARATOR   (
          ZR     X0,CCLASV   EXIT IF SEPARATOR   .
  
          SX7    X4-1R\ 
          SX0    X4-1R/ 
          SX6    X4-1R? 
          ZR     X6,CCLASV   EXIT IF SEPARATOR ?
          ZR     X7,CCLASV   EXIT IF SEPARATOR \
          ZR     X0,CCLASV   EXIT IF SEPARATOR /
  
          JP     ASV9        ILLEGAL SEPARATOR
  
 NBESC2   IFNE   HOST,NOS 
 ASV7     BSS 
  
 OSSC2    IFEQ   HOST,SC2 
          RJ     =XSTRANS    GET NEXT SEPARATOR 
          SA5    ANSCHR 
          ZR     X5,ASV6     ANOTHER SEPARATOR AFTER BLANK
  
*         THE BLANK FOLLOWING THE VERB IS FOLLOWED BY A 
*         CHARACTER STRING.  IN THIS CASE, THE BLANK IS 
*         AN INVALID SEPARATOR. 
  
 OSSC2    ELSE
          JP     CCLASV      RETURN 
 OSSC2    ENDIF 
 NBESC2   ENDIF 
  
 ASV9     BSS 
          MX6    0
          SX5    B1          ERROR CODE 
          SA6    ANSVRB      CLEAR VERB 
          JP     CCLASV      EXIT 
  
