*COMDECK SYNGN00
          #************************************************#
          #                                                #
          #  SYNTAX SECTIONS COMMON TO ALL OVERLAYS        #
          #                                                #
          #************************************************#
  
  
      :STARTSYNTAX :01             #--S T A R T S Y N T A X------------#
                                   #                                   #
                                   # SYNTAX CRACKING STARTS HERE       #
  
            *RPTSYN       05 /     # STDYES IF BUILDING REPORT TABLES. #
            FULLSYNTAX             # RETURN INTO *FULLSYNTAX* LOOP     #
                                   # CONTROL NEVER RETURNS...          #
  
        :05 *SAMEOVL      15 /     # STDNO IF JUST CHANGED OVERLAYS    #
            +EOT          07 /     # CHECK FOR END-OF-TRANSMISSION     #
            *CHK40           / 20  # EOT PROCESSING + OVL SELECTION    #
  
        :07 *STKINIT               # INITIALIZE DIRECTIVE STACKING     #
            D069             /     # HAS UNRECORDABLE DIRECTIVE        #
            *CHKNOTE      08 /     # STDYES IF *NOTE*. KEEPS STD FROM  #
                                   # LOOKING AT TOKENS FOLLOWING *NOTE*#
            NOTE             / 18  # PROCESS *NOTE*.  LEFT AT EOT.     #
                                   #                                   #
        :08 *CHKIFLG      13 /     # *YES* IF NEED TO SKIP OVER TOKENS #
                                   # UNTIL *IF* OR EOT                 #
            *CLRNEXT         /     # CLEAR FLAGS THAT SIGNAL THE NEED  #
                                   # TO SKIP TOKENS                    #
                                   #                                   #
        :09 $IF           10 / 15  # IGNORE ANYTHING BUT *IF* ...      #
                                   #                                   #
        :10 *CHKNOTE      11 /     # ... AND *NOTE*                    #
            NOTE             / 18  # PROCESS NOTE AT END OF XMISSION   #
                                   #                                   #
        :11 +EOT                   # CHECK FOR END-OF-TRANSMISSION     #
            +SNW          09 / 18  # KEEP SKIPPING IF NOT EOT          #
                                   #                                   #
        :13 +KEY          20 / 15  # CHECK FOR A DIRECTIVE KEYWORD     #
  
        :15 +SUBS                  # EXECUTE SYNTAX SUBSECTION FOR KEY #
            *SPLACFG      05 /     # SET PLACEFLAG TO 77B IF SUBS CAME #
                                   # BACK WITH *NO*.                   #
            *IFRPTD                # *YES* IF THIS WAS A REPORT DIRECTV#
            +EOT          05 /     # IF EOT, TRY TO RECORD, ELSE START #
                                   # CRACKING NEXT DIRECTIVE           #
  
        :18 *STKOUT          / 05  # RECORD DIRECTIVE IF IT SHOULD BE. #
                                   # THIS CALL IS MAPPED DIRECTLY TO   #
                                   # *WRTSESS* IN SOME OVERLAYS. CHECK #
                                   # A LISTING OF QUGEN TO BE SURE     #
  
        :20 +EOT                   # CHECK FOR END-OF-TRANSMISSION     #
            +EOF                   # CHECK FOR END-OF-FILE ON INPUT    #
            +SNW                   # SKIP TO NEXT (UNRECOGNIZED) TOKEN #
            *RLSBASC               # RELEASE BASIC TABLE SPACE         #
            D077             /     # DIAGNOSE INVALID QU DIRECTIVE     #
            *STD$RETURN            # RETURN TO QU FOR NEXT READ        #
                                   #                                   #
                                   #--E N D---S T A R T S Y N T A X----#
  
  
  
  
      :FULLSYNTAX :01              #--F U L L S Y N T A X--------------#
                                   #                                   #
                                   # LOOP TO CONTROL READING OF REPORT #
                                   # DIRECTIVES FROM CATALOG FILE FOR  #
                                   # *PREPARE/PREVIEW/COMPILE*.        #
  
            *RPTSYN       03 / 12  # *YES* IF *RPTFLAG* ALREADY SET    #
                                   # THIS MEANS TABLES ARE ALREADY     #
                                   # BEING BUILT... JUST CHANGED OVL   #
  
        :03 *RPTSET                # SET *RPTFLAG*. FIRST ENTRY        #
  
        :05 +SNW                   # SKIP TO NEXT TOKEN (FILL NEXWORD) #
  
        :10 +KEY          15 /     # CHECK FOR DIRECTIVE KEYWORD       #
  
        :12 +SUBS                  # EXECUTE SYNTAX SUBSECTION FOR KEY #
            *WRDIRT                # WRITE DIRECTIVE FROM WHOSE SYNTAX #
                                   # SUBSECTION WE RETURNED VIA *NO*.  #
            LOST                   # BAD DIRECTIVE GETS US LOST        #
            *RPTCLR                # CLEAR *RPTFLAG* BEFORE EXIT       #
            *STD$RETURN      /     # EXIT TO CALLER OF SYNTAX CRACKING #
  
            +EOT          10 /     # IF NOT EOT, CRACK NEXT DIRECTIVE  #
            *CALLIO          / 05  # READ NEXT DIRECTIVE FROM CATALOG  #
  
        :15 +EOF                   # IF REACHED EOF, SUCCESSFUL LOOP   #
                                   # ELSE FOUND SOME BAD KEYWORD       #
            *RPTCLR                # CLEAR *RPTFLAG* BEFORE EXIT       #
            *STD$RETURN      /     # EXIT TO CALLER OF SYNTAX CRACKING #
  
            *RPTEXIT               # EXIT TO THE EXECUTION OVERLAY     #
            D167                   # DIAGNOSE NO EXECUTABLE REPORT STEP#
            *STD$RETURN      /     # EXIT TO CALLER OF SYNTAX CRACKING #
  
                                   #                                   #
                                   #--E N D---F U L L S Y N T A X------#
  
  
  
  
      :WRONGOVERLAY :01            #---W R O N G O V E R L A Y---------#
                                   #                                   #
                                   # THIS SECTION IS CALLED WHEN A     #
                                   # DIRECTIVE IS ENCOUNTERED WHICH    #
                                   # MUST BE PROCESSED IN A DIFFERENT  #
                                   # OVERLAY. THE CALL TO *LOAD1X*,    #
                                   # FROM WHICH WE DONT RETURN, WILL   #
                                   # LOAD THE (1,X) OVERLAY WHOSE      #
                                   # SECONDARY LEVEL IS INDICATED IN   #
                                   # THE P2 ENTRY FOR THE DIRECTIVE    #
                                   # KEYWORD. THIS IS ALTERED BY SOME  #
                                   # ROUTINES SO WE CAN HAVE PROCESSING#
                                   # FOR A DIRECTIVE SPLIT BETWEEN TWO #
                                   # OVERLAYS (EG. *MOVE* DIRECTIVE).  #
                                   # THE FOLLOWING IS A LIST OF THE    #
                                   # ROUTINES THAT ALTER THE P2 VALUE  #
                                   # FOR THIS PURPOSE.                 #
                                   #                                   #
                                   #  CKOVLY     FOR MOVE/EVALUATE     #
                                   #  EXHOVL     FOR EXHIBIT           #
  
            *LOAD1X       NO /YES  # LOAD THE APPROPRIATE (1,X)        #
                                   #                                   #
                                   #--E N D---W R O N G O V E R L A Y--#
  
  
  
      :LOST :01                    #----L O S T------------------------#
                                   #                                   #
                                   # THIS SECTION SKIPS THE REST OF THE#
                                   # TRANSMISSION AND ISSUES DIAGNOSTIC#
                                   # 29 REQUESTING  RE-TRANSMISSION    #
  
            D029                   # REQUEST RETRANSMISSION            #
            *RLSBASC               # RELEASE ANY BASIC TABLE SPACE     #
  
        :05 +EOT                   # CHECK FOR END-OF-TRANSMISSION     #
            +SNC          05 / NO  # SKIP TO NEXT CARD (TRANSMISSION)  #
                                   # RETURN VIA *NO*                   #
                                   #                                   #
                                   #---E N D---L O S T-----------------#
  
  
  
  
      :ABEXPR  :01                 #---A B E X P R---------------------#
                                   #                                   #
                                   # ANALYZE AND STORE EITHER AN       #
                                   # ARITHMETIC EXPRESSION OR A        #
                                   # BOOLEAN EXPRESSION.               #
                                   #                                   #
            *CONDINIT              # INITIALIZE ARRAYS AND PTRS.       #
            $NOT          05 /     # CHECK FOR KEYWORD *NOT*           #
            *NOTOP                 # STACK A *NOT* OPERATOR            #
  
        :05 $(            10 /     # CHECK FOR LEFT PARENTHESIS        #
            *OPENPAREN             # STACK A *NESTING* PARENTHESIS     #
            D070          NO /     # DIAGNOSE REACHING NESTING LIMIT   #
  
        :10 $SAME         15 /     # CHECK FOR KEYWORD *SAME*          #
            *IFSAME                # GETS THE STACK FROM PREVIOUS *IF* #
            D018          NO / 25  # DIAGNOSE ILLEGAL DATA TYPE (NOT   #
                                   # USED IN AN *IF*).                 #
  
  
        :15 EXPRESS       NO /     # BUILD EXPRESSION STACK FOR FIRST  #
                                   # HALF OF A RELATION. RETURN VIA    #
                                   # *NO* IF ARITH EXPRESSION WAS BAD. #
            $=                     # RELATIONAL OP *EQUALS*            #
            $"                     # RELATIONAL OP *NOT EQUAL*         #
            $>                     # RELATIONAL OP *GREATER THAN*      #
            $<                     # RELATIONAL OP *LESS THAN*         #
            $\                     # RELATIONAL OP *GREATER OR EQUAL*  #
            $@                     # RELATIONAL OP *LESS OR EQUAL*     #
            *CHKLOGOPFLAG 25 /     # IF THE IMMEDIATELY PRECEDING      #
                                   # OPERATOR WAS *LOGICAL*, AND THE   #
                                   # CURRENT OPERAND IS NOT *LOGICAL*, #
                                   # INSERT A COPY OF THE FIRST HALF   #
                                   # OF THE PRECEDING RELATION         #
                                   # (IMPLIED OPERATOR).               #
  
        :20 *OPERATOR        /     # STACK AN OPERATOR.                #
            *RELOP                 # SAVE THE RELATIONAL OPERATOR AND  #
                                   # THE FIRST HALF OF THE RELATION    #
                                   # FOR POSSIBLE USE LATER AS IMPLIED #
                                   # OPERAND AND OPERATOR.             #
            EXPRESS       NO /     # BUILD EXPRESSION STACK FOR SECOND #
                                   # HALF OF A RELATION. RETURN VIA    #
                                   # *NO* IF ARITH EXPRESSION WAS BAD. #
  
        :25 $AND                   # LOGICAL OP *AND*                  #
            $OR                    # LOGICAL OP *OR*                   #
            $XOR          40 /     # LOGICAL OP *EXCLUSIVE OR*         #
            *LOGOP           /     # STACK THE LOGICAL OPERATOR AND    #
                                   # SAVE THE FIRST HALF OF THE        #
                                   # PRECEDING RELATION FOR POSSIBLE   #
                                   # USE LATER AS IMPLIED OPERAND AND  #
                                   # OPERATOR.                         #
  
            $NOT          30 /     # CHECK FOR KEYWORD *NOT*           #
            *NOTOP                 # STACK A *NOT* OPERATOR            #
  
        :30 $(            35 /     # CHECK FOR LEFT PARENTHESIS        #
            *OPENPAREN             # STACK A *NESTING* PARENTHISIS     #
            D070          NO /     # DIAGNOSE REACHING NESTING LIMIT   #
  
        :35 $=                     # RELATIONAL OP *ERUALS*            #
            $"                     # RELATIONAL OP *NOT EQUAL*         #
            $>                     # RELATIONAL OP *GREATER THAN*      #
            $<                     # RELATIONAL OP *LESS THAN*         #
            $\                     # RELATIONAL OP *GREATER OR EQUAL*  #
            $@            15 /     # RELATIONAL OP *LESS OR EQUAL*     #
            *STKOPNDSAVED 20       # INSERT COPY OF FIRST HALF OF      #
                                   # PRECEDING RELATION INTO STACK     #
                                   # (IMPLIED OPERAND).                #
        :40 *ENDABEXPR             # CLEAN UP STACK                    #
            D149          NO /YES  # DIAGNOSE MISSING VALID EXPRESSION #
                                   #                                   #
                                   #---E N D---A B E X P R-------------#
  
  
  
  
      :ARITHEXPRESS :01            #---A R I T H E X P R E S S---------#
                                   #                                   #
                                   # ANALYZE AND STORE AN ARITHMETIC   #
                                   # EXPRESSION.                       #
  
            *EXPRINIT              # INITIALIZE ARRAYS AND PTRS.       #
            EXPRESS       NO /     # ANALYZE. BUILD EXPRESSION STACK   #
            *ENDEXPRESS   NO /YES  # CLEAN UP EXPRESSION STACK         #
                                   #                                   #
                                   #--E N D---A R I T H E X P R E S S--#
  
  
  
  
      :CONDITION :01               #----C O N D I T I O N--------------#
                                   #                                   #
                                   # ANALYZE AND STORE A CONDITION     #
                                   # (BOOLEAN EXPRESSION)              #
  
            *CONDINIT              # INITIALIZE ARRAYS AND PTRS.       #
        :02 $NOT          05 /     # CHECK FOR KEYWORD *NOT*           #
            *NOTOP                 # STACK A *NOT* OPERATOR            #
  
        :05 $(            10 /     # CHECK FOR LEFT PARENTHESIS        #
            *OPENPAREN             # STACK A *NESTING* PARENTHESIS     #
            D070          NO / 02  # DIAGNOSE REACHING NESTING LIMIT   #
  
        :10 $SAME         15 /     # CHECK FOR KEYWORD *SAME*          #
            *IFSAME                # GETS THE STACK FROM PREVIOUS *IF* #
            D018          NO /     # DIAGNOSE ILLEGAL DATA TYPE (NOT   #
                                   # USED IN AN *IF*).                 #
            *RECSAME      25 /     # DON-T CRACK -SAME- IF RECORDING   #
  
  
        :15 EXPRESS       NO /     # BUILD EXPRESSION STACK FOR FIRST  #
                                   # HALF OF A RELATION. RETURN VIA    #
                                   # *NO* IF ARITH EXPRESSION WAS BAD. #
            $=                     # RELATIONAL OP *EQUALS*            #
            $"                     # RELATIONAL OP *NOT EQUAL*         #
            $>                     # RELATIONAL OP *GREATER THAN*      #
            $<                     # RELATIONAL OP *LESS THAN*         #
            $\                     # RELATIONAL OP *GREATER OR EQUAL*  #
            $@                     # RELATIONAL OP *LESS OR EQUAL*     #
            *CHKLOGOPFLAG 25 /     # IF THE IMMEDIATELY PRECEDING      #
                                   # OPERATOR WAS *LOGICAL*, AND THE   #
                                   # CURRENT OPERAND IS NOT *LOGICAL*, #
                                   # INSERT A COPY OF THE FIRST HALF   #
                                   # OF THE PRECEDING RELATION         #
                                   # (IMPLIED OPERATOR).               #
  
        :20 *OPERATOR        /     # STACK AN OPERATOR.                #
            *RELOP                 # SAVE THE RELATIONAL OPERATOR AND  #
                                   # THE FIRST HALF OF THE RELATION    #
                                   # FOR POSSIBLE USE LATER AS IMPLIED #
                                   # OPERAND AND OPERATOR.             #
            EXPRESS       NO /     # BUILD EXPRESSION STACK FOR SECOND #
                                   # HALF OF A RELATION. RETURN VIA    #
                                   # *NO* IF ARITH EXPRESSION WAS BAD. #
  
        :25 $AND                   # LOGICAL OP *AND*                  #
            $OR                    # LOGICAL OP *OR*                   #
            $XOR          40 /     # LOGICAL OP *EXCLUSIVE OR*         #
            *LOGOP           /     # STACK THE LOGICAL OPERATOR AND    #
                                   # SAVE THE FIRST HALF OF THE        #
                                   # PRECEDING RELATION FOR POSSIBLE   #
                                   # USE LATER AS IMPLIED OPERAND AND  #
                                   # OPERATOR.                         #
  
        :27 $NOT          30 /     # CHECK FOR KEYWORD *NOT*           #
            *NOTOP                 # STACK A *NOT* OPERATOR            #
  
        :30 $(            35 /     # CHECK FOR LEFT PARENTHESIS        #
            *OPENPAREN             # STACK A *NESTING* PARENTHISIS     #
            D070          NO / 27  # DIAGNOSE REACHING NESTING LIMIT   #
  
  
        :35 $=                     # RELATIONAL OP *ERUALS*            #
            $"                     # RELATIONAL OP *NOT EQUAL*         #
            $>                     # RELATIONAL OP *GREATER THAN*      #
            $<                     # RELATIONAL OP *LESS THAN*         #
            $\                     # RELATIONAL OP *GREATER OR EQUAL*  #
            $@            15 /     # RELATIONAL OP *LESS OR EQUAL*     #
            *STKOPNDSAVED 20       # INSERT COPY OF FIRST HALF OF      #
                                   # PRECEDING RELATION INTO STACK     #
                                   # (IMPLIED OPERAND).                #
  
        :40 *ENDCOND               # CLEAN UP CONDITION STACK          #
            D149          NO /YES  # DIAGNOSE MISSING VALID EXPRESSION #
                                   #                                   #
                                   #--E N D---C O N D I T I O N--------#
  
  
  
  
      :DATA-ATTRIB :01             #---D A T A - A T T R I B-----------#
                                   #                                   #
                                   # IDENTIFY AND SAVE THE ATTRIBUTES  #
                                   # OF A DATANAME.                    #
  
            *CLRFLGS         /     # CLEAR FUNCTION AND REGISTER FLAGS #
                                   #                                   #
            +NAME         35 /     # CHECK FOR A VALID NAME            #
            *RESETNAM              # RESET FIELD NAME TABLE            #
  
        :05 *ITMNAM       NO /     # SAVE ITEM NAME                    #
            $(            25 /     #  CHECK FOR LEFT PARENTHESIS. IF   #
                                   # PRESENT, MUST BE A SUBSCRIPT SINCE#
                                   # +NAME WOULD NOT ALLOW A FUNCTION  #
                                   # NAME TO COME THIS FAR.            #
            +INT          10 /     # CHECK FOR INTEGER AS SUBSCRIPT    #
            *SUBSCRIPT             # STORE CONSTANT SUBSCRIPT          #
            D040          NO / 20  # DIAGNOSE INVALID SUBSCRIPT        #
  
        :10 $CURRENT-ANY           # CHECK FOR KEYWORD *CURRENT-ANY*   #
            +NAME         15 /     # CHECK FOR VALID NAME              #
            *INTSUBS               # STORE INTEGER-ITEM SUBSCRIPT      #
            D181          NO / 20  # DIAGNOSE UNDEFINED OR INVALID     #
                                   # TYPE OF SUBSCRIPT.                #
  
        :15 $LAST                  # FIGURATIVE SUBSCRIPT *LAST*       #
            $NEXT                  # FIGURATIVE SUBSCRIPT *NEXT*       #
            $ANY                   # FIGURATIVE SUBSCRIPT *ANY*        #
            $ALL                   # FIGURATIVE SUBSCRIPT *ALL*        #
            +SNW                   # SKIP TO NEXT TAKEN (INVALID SUBSC)#
            D040          NO /     # DIAGNOSE INVALID SUBSCRIPT        #
            *FIGSUBS               # STORE FIGURATIVE SUBSCRIPT        #
            D944          NO /     # DIAGNOSE INVALID USE OF FIG.SUB.  #
  
        :20 $)                     # CHECK FOR RIGHT PARENTHESIS       #
            D062          NO       # DIAGNOSE PARENTHESIS IMBALANCE    #
  
        :25 *CHKDLUP      30 /     # GO TO 30 IF CALLED FROM DEL-UP-SYN#
                                   # WHICH USES -OF- WITH A DIFFERENT  #
                                   # MEANING                           #
            $OF           30 /     # CHECK FOR QUALIFIER *OF*          #
            *CHKTEMP               # CHECK IF NAME CAN BE QUALIFIED    #
            D365          NO /     # DIAGNOSE SPEDEDE ITEMS MAY NOT BE #
                                   # QUALIFIED WITH *OF*.              #
            +NAME                  # CHECK FOR VALID QUALIFYING NAME   #
            D022          NO / 05  # DIAGNOSE <C><N> INVALID SYNTAX    #
  
        :30 *GETNAME      NO / YES # STORE ATTRIBUTES OF LITERAL OR    #
                                   # (QUALIFIED NAME).                 #
  
        :35 +LIT          40 /     # CHECK FOR A (NON-)NUMERIC LITERAL #
            *STORLIT         /YES  # STORE LITERAL. DESCRIPTION IN     #
                                   # CEXPRESS.                         #
  
        :40 $SUM                   # CUMULATIVE FUNCTION *SUM*         #
            $COUNT                 # CUMULATIVE FUNCTION *COUNT*       #
            $MEAN                  # CUMULATIVE FUNCTION *MEAN*        #
            $MINS                  # CUMULATIVE FUNCTION *MINS*        #
            $MAXS         45 /     # CUMULATIVE FUNCTION *MAXS*        # QU3A334
            *CUMFUN                # STORE CUMULATIVE FUNCTION CODE    #
            $(                     # CHECK FOR LEFT PARENTHESIS        #
            D067          NO /     # DIAGNOSE REQUIRED BUT MISSING     #
                                   # PARENTHESIZED PARAMETER LIST      #
            *SETPARM         /     # FLAG THAT DATA-ATTRIB IS BEING    #
                                   # CALLED FOR A FUNCTION PARAMETER.  #
            DATA-ATTRIB            # PARSE THE FUNCTION PARAMETER      #
            *CLRPARM               # CLEAR FUNCTION PARAMETER FLAG     #
            D068          NO /     # DIAGNOSE INVALID FUNCTION PARAM.  #
                                   #                                   #
            *CLRPARM               # CLEAR FUNCTION PARAMETER FLAG     #
            *CUMFUPM      NO /     # STORE CUM. FUNC. PARAMETER        #
            $)                     # CHECK FOR PARENTHESIS TERMINATING #
                                   # THE FUNCTION PARAMETER LIST       #
            D062          NO /YES  # DIAGNOSE PARENTHESIS IMBALANCE    #
                                   #                                   #
        :45 $CURRENT-ANY           # VALUE OF MOST RECENT *ANY* INDEX  # QU3A334
            $CURRENT-DATE          # TEN CHARACTER DATE                # QU3A334
            $CURRENT-LINE          # LINE NUMBER IN PAGE DURING REPORT # QU3A334
            $CURRENT-PAGE          # PAGE NUMBER DURING RPT GENERATION # QU3A334
            $CURRENT-REPORT        # REPORT-NAME DURING RPT GENERATION # QU3A334
            $CURRENT-SESSION       # NAME OF SESSION PERFORMING/RECORD # QU3A334
            $CURRENT-TIME          # TEN CHARACTER TIME                #
            $USER-ID      NO /     # TEN CHARACTER USER-ID             #
            *CURTT           /YES                                        QU3A334
                                                                         QU3A334
                                   #--E N D---D A T A - A T T R I B----#
  
  
  
  
      :EXPRESS :01                 #--------E X P R E S S--------------#
                                   #                                   #
                                   # RECOGNITION OF ARITHMETIC AND     #
                                   # RELATIONAL EXPRESSIONS.           #
  
        :05 $-                     # CHECK FOR LEADING MINUS SIGN      #
            -+            10 /     # IGNORE LEADING PLUS               #
            *UNARYOP         / 10  # STACK A UNARY MINUS               #
  
        :10 $(            15 /     # CHECK FOR LEFT PARENTHESIS        #
            *OPENPAREN             # STACK OPEN PARENTHESIS            #
            D070          NO / 05  # DIAGNOSE IF PASSED NESTING LIMIT  #
  
        :15 DATA-ATTRIB   20 /     # CHECK FOR DATANAME OR LITERAL     #
            *EXPRESSDATA  NO / 35  # STORE DATA THING                  #
  
        :20 $ABS                   # ONE PARAMETER                     #
            $DECODE                # THREE PARAMETERS                  #
            $GREG                  # ONE PARAMETER                     #
            $JULIAN                # ONE PARAMETER                     #
            $MASK                  # THREE PARAMETERS                  #
            $MAX                   # TWO OR MORE PARAMETERS            #
            $MIN                   # TWO OR MORE PARAMETERS            #
            $SCAN                  # TWO OR MORE PARAMETERS            #
  
            D149          NO /     # DIAGNOSE MISSING A VALID EXPRESSN #
            *FUNCTION        /     # STORE FUNCTION                    # QU3A334
            $(                     # CHECK FOR PARENTHESIZED PARAM LIST#
            D067          NO / 25  # DIAGNOSE REQUIRED FUNC PARAMETERS #
  
        :25 *SETPARM         /     # FLAG THAT DATA-ATTRIB IS BEING    #
                                   # CALLED FOR A FUNCTION PARAMETER.  #
            DATA-ATTRIB            # DATANAME OR LITERAL PARAMETER     #
            *CLRPARM               # CLEAR FUNCTION PARAMETER FLAG     #
            D068          NO /     # DIAGNOSE INVALID FUNCTION PARAM   #
                                   #                                   #
            *CLRPARM               # CLEAR FUNCTION PARAMETER FLAG     #
            *FUNCPARAM    NO /     # STORE FUNCTION PARAMETER          #
            $)            25 / 30  # FUNC PARAM ENDS WITH PARENTHESIS  #
  
        :30 *OPERAND               # STACK AN OPERAND                  #
            D165          NO / 35  # DIAGNOSE ERROR IN NUMBER OF       #
                                   # FUNCTION PARAMETERS               #
  
        :35 $+                     # CHECK FOR ADDITION  ($PLUS)       #
            $-                     # CHECK FOR SUBTRACTION  ($MINUS)   #
            $*                     # CHECK FOR MULTIPLICATION  ($TIMES)#
            $/                     # CHECK FOR DIVISION  ($OVER)       #
            $**           40 /     # CHECK FOR EXPONENTIATION ($RAISED)#
            *OPERATOR        / 05  # STACK THE BINARY OPERATOR         #
  
        :40 $)            YES/     # CHECK TERMINATING PARENTHESIS     #
            *OPERATOR              # POP STACK FOR CLOSED PAREN        #
            D062          NO / 35  # DIAGNOSE PARENTHESIS IMBALANCE    #
                                   #                                   #
                                   #---E N D------E X P R E S S--------#
  
  
  
  
      :LFN :01                     #-----L F N-------------------------#
                                   #                                   #
                                   # THIS SECTION CHECKS THE VALIDITY  #
                                   # OF AN LFN. IF INVALID, DIAGNOSTIC #
                                   # 101 IS ISSUED AND RETURN VIA *NO* #
                                   # IF VALID, THE LFN IS STORED IN    #
                                   # ARRAY CLFN, INDEX IS GIVEN BY THE #
                                   # P1 VALUE OF THE KEYWORD PRECEDING #
                                   # THE LFN IN THE DIRECTIVE.         #
                                   # IF NO LFN IS PRESENT, A DIAG IS   #
                                   # ISSUED AND RETURN IS VIA *NO*.    #
  
            *SAVCP1A               # SAVE CURRENT P1A VALUE FOR INDEX  #
            +EOT          03 /     # FILE NAME IS REQUIRED             #
            D356             / NO  # DIAGNOSE NO LFN PRESENT           #
  
        :03 +NAME                  # CHECK IF LFN IS A NAME            #
            +SNW          05 /     # SKIP TO NEXT TOKEN (INVALID NAME) #
            *CHKLFN       05 /YES  # CHECK NAME AS LFN, STORE IF GOOD  #
  
        :05 D101             / NO  # DIAGNOSE TOKEN AS ILLEGAL LFN     #
                                   #                                   #
                                   #--E N D---L F N--------------------#
  
  
  
  
      :DIAGNOSTIC :01              #--D I A G N O S T I C--------------#
                                   #                                   #
                                   # THIS DIRECTIVE CONTROLS THE       #
                                   # AMOUNT OF OUTPUT GENERATED BY     #
                                   # REPEATED CALLS TO *DIAG*.         #
  
            *ENDBASC               # END BASIC TABLE                   #
            LOST          NO /     #                                   #
            *CHKNXID      05 /     # CHECK IF KEYWORD FOLLOWS          #
            D287                   # DIAGNOSE *PART/FULL* AS ONLY OPTS #
            LOST             / NO 
  
        :05 $FULL         10 /     # CHECK FOR KEYWORD *FULL*          #
            *DIAFULL         /YES  # SET *DIAG,FULL*                   #
  
        :10 $PART                  # CHECK FOR KEYWORD *PART*          #
            D287                   # DIAGNOSE *PART/FULL* AS ONLY OPTS #
            LOST          NO /
            *DIAPART         /YES  # SET *DIAG,PART*                   #
                                   #                                   #
                                   #----E N D---D I A G N O S T I C----#
  
  
  
  
      :END :01                     #----E N D--------------------------#
                                   #                                   #
                                   # THIS DIRECTIVE SECTION TERMINATES #
                                   # EXECUTION.                        #
  
            *CRECFLG      YES/     # IF RECORDING, RETURN VIA *YES*    #
            *STOPEXEC              # STOP EXECUTION (NO RETURN).       #
                                   #                                   #
                                   #---E N D--E N D--------------------#
  
  
  
  
      :HELP :01                    #----H E L P------------------------#
  
            *ENDBASC               # RELEASE MEMORY USED FOR BASIC TBLS#
            LOST          NO /     # ERR -- IGNORE REST OF TRANSMISSION#
            +EOT          05 / 15  # HELP MAY BE FOLLOWED BY NOTHING,  #
  
        :05 +INT          10 /     #   OR A DIAGNOSTIC NUMBER,         #
            *PLUGD        15       # (SAVE THE DIAGNOSTIC NUMBER)      #
  
        :10 *CHKNXID      20 /     #   OR BY A DIRECTIVE NAME.         #
            +SNW                   #                                   #
            *PLUGARY               # (SAVE THE LEXICAL ID)             #
  
        :15 *HELP            /YES  # CALL HELP TO ISSUE TEXT           #
  
        :20 D212                   # INVALID SYNTAX OR HELP OPTION     #
            LOST             / NO 
  
                                   #----E N D---H E L P----------------#
  
  
  
  
      :NOTE :01                    #-----N O T E-----------------------#
                                   #                                   #
                                   # THIS DIRECTIVES FUNCTION IS TO    #
                                   # SKIP TO THE END OF THE CARD, AND  #
                                   # IGNORE THE REST OF THE CARD.      #
  
        :05 +EOT
            +SNC          05 /YES 
                                   #                                   #
                                   #----E N D---N O T E----------------#
  
  
  
  
      :STOP :01                    #---S T O P-------------------------#
                                   #                                   #
                                   # THIS OUTDATED DIRECTIVE SECTION   #
                                   # IS HERE FOR COMPATIBILITY WITH    #
                                   # EARLY VERSIONS OF QU2. CALLS *END*#
                                   # TO DO PROCESSING.                 #
  
            END              /YES  # CALL TO *END* SYNTAX SECTION.     #
                                   # *YES* IF *STOP* WAS RECORDED.     #
                                   #                                   #
                                   #---E N D---S T O P-----------------#
  
  
  
  
      :PERLOOP :01                 #---P E R L O O P-------------------#
                                   #                                   #
                                   # EXECUTION OF DIRECTIVES WITHIN A  #
                                   # SESSION BEING PERFORMED.          #
  
        :05 *CALLIO          /     # GET NEXT XMISSION IN CUR. SESSION #
            +SNW                   # INITIALIZE NEXT SYNTAX WORD       #
            +EOF          10 / 35  # PROCEED WITH CURRENT SESSION IF   #
                                   # NOT EXHAUSTED, ELSE GO ON TO NEXT #
  
        :10 *TSVETO       05 /     # IF VETO SELECTED, SHOW TO USER    #
                                   # STDNO IF TRANSMISSION VETOED      #
  
        :15 *SETDIRX         /     # SET FLAGS -DIRLEXID-, -TYPEALOW-  #
            *SAMEOVL      25 /     # STDNO IF OVERLAY SWITCH OCCURRED  #
            *CHKNOTE      20 /     # STDYES IF *NOTE*                  #
            NOTE             / 30  # PROCESS *NOTE*.  LEFT AT EOT      #
  
        :20 +KEY                   # YES IF A DIRECTIVE KEYWORD        #
            *WRDIRT                # DISPLAY ERRONEOUS INPUT IF NOT    #
            LOST          NO /     # IGNORE REST OF PERFORM            #
  
        :25 +SUBS            /     # EXECUTE DIRECTIVE SECTION         #
            +EOT          15 /     # IF NOT EOT GO DO NEXT DIRECTIVE   #
  
        :30 *CHK40           / 05  # EOT PROCESSING, THEN NEXT XMISSION#
  
        :35 *PERNEXT      05 /YES  # GET NEXT SESSION TO PERFORM       #
                                   # IF ANY, GO GET 1ST XMISSION IN    #
                                   # NEW ONE.  IF NONE, RETURN         #
                                   #                                   #
                                   #---E N D---P E R L O O P-----------#
  
  
  
  
      :PLOST :01                   #---P L O S T-----------------------#
                                   #                                   #
                                   # *LOST* PROCESSING FOR *PERFORM*   #
  
            *PEREND          /     # ERASE ALL PERFORM TABLE ENTRIES   #
            LOST             / NO  # IGNORE REST OF TRANSMISSION       #
                                   #                                   #
                                   #---E N D---P L O S T---------------#
  
  
  
#----------------------------------------------------------------------#
#                                                                      #
# NOW FOLLOWS THE SYNGEN INPUT FOR DIRECTIVES IN THIS OVERLAY. ALL     #
# DIRECTIVES NOT HANDLED BY THIS OVERLAY MUST HAVE A SYNTAX SECTION    #
# THAT CALLS THE SYNTAX SECTION *WRONGOVERLAY* (IN SYNGN00). IT IS     #
# CRUCIAL THAT DIRECTIVE SECTIONS APPEAR IN ALPHABETIC ORDER. WHEN     #
# *WRONGOVERLAY* SWITCHES TO ANOTHER OVERLAY, IT BEGINS ITS EXECUTION  #
# AT THE LABEL WHOSE ORDINAL (IN THE LIST OF DIRECTIVE SECTIONS) IS THE#
# SAME AS THE ONE IT JUST TRIED (AND GOT *WRONGOVERLAY*). THUS IF TWO  #
# DIRECTIVES ARE OUT OF ORDER IN ONE OVERLAY, THE ORDINAL THAT         #
# CORRESPONDED TO THAT DIRECTIVE NOW IDENTIFIES ANOTHER DIRECTIVE*S    #
# SYNTAX SECTION. THIS ERROR CAN CAUSE WEIRD MODE ERRORS (IF THE       #
# ORDINAL IT STARTS ON IN THE NEW OVERLAY HAS A SYNTAX SECTION) OR A   #
# TIME LIMIT (IF THE ORDINAL IT STARTS ON IN THE NEW OVERLAY CALLS     #
# *WRONGOVERLAY* AND LOADS AN OVERLAY WITH CORRECT ORDINALS).          #
#                                                                      #
#     B E     C A R E F U L . . . .                                    #
#                                                                      #
#----------------------------------------------------------------------#
                                   #                                   #
                                   #  CALIFORNIA HISTORICAL LANDMARK   #
                                   #           NUMBER 734              #
                                   #                                   #
                                   #        WRONGOVERLAY ABYSS         #
                                   #                                   #
                                   #-----------------------------------#
  
  
  
