*DECK SYNGN15 
PROC SYNGN15
*CALL LEXID 
          + 
*CALL SUB15 
          + 
*CALL SYNGN00 
      :ACCESS   :01 
            WRONGOVERLAY     / YES
  
      :ALTER    :01 
            WRONGOVERLAY     / YES
  
      :BREAK    :01 
            WRONGOVERLAY     / YES
  
      :COMPILE  :01 
            WRONGOVERLAY     / YES
  
      :CREATE   :01 
            WRONGOVERLAY     / YES
  
      :DATE     :01 
            WRONGOVERLAY     / YES
  
      :DEFINE   :01 
            WRONGOVERLAY     / YES
  
      :DELETE   :01 
            WRONGOVERLAY     / YES
  
      :DESCRIBE :01 
            WRONGOVERLAY     / YES
  
      :DETAIL   :01 
            WRONGOVERLAY     / YES
  
      :DIRECTORY  :01 
            WRONGOVERLAY     / YES
  
      :DISPLAY  :01 
            WRONGOVERLAY     / YES
  
      :DUPLICATE :01
            WRONGOVERLAY     / YES
  
      :ERASE    :01 
            WRONGOVERLAY     / YES
  
      :EVALUATE :01 
            WRONGOVERLAY     / YES
  
      :EXECUTE  :01 
            WRONGOVERLAY     / YES
  
      :EXHIBIT  :01 
            WRONGOVERLAY     / YES
  
      :EXTRACT  :01 
            WRONGOVERLAY     / YES
  
      :FOLLOW   :01 
            WRONGOVERLAY     / YES
  
      :FOOTING  :01 
            WRONGOVERLAY     / YES
  
      :FORMAT   :01 
            WRONGOVERLAY     / YES
  
      :HEADING  :01 
            WRONGOVERLAY     / YES
  
      :IF       :01 
            WRONGOVERLAY     / YES
  
      :INSERT   :01 
            WRONGOVERLAY     / YES
  
      :INVOKE   :01 
            WRONGOVERLAY     / YES
  
      :LOOKUP   :01 
            WRONGOVERLAY     / YES
  
      :MODIFY  :01                 #---M O D I F Y---------------------#
                                   #                                   #
                                   # THE *MODIFY* DIRECTIVE MODIFIES   #
                                   # VALUES OF DATA ITEMS INSIDE       #
                                   # EXISTING RECORDS AND/OR TEMPORARY #
                                   # ITEMS.                            #
                                   #                                   #
            *CKIMFOV               # STDYES IF IN CORRECT SMR OVERLAY  #
            WRONGOVERLAY     /     # LOAD CORRECT OVERLAY              #
            SMR-INIT               # ALLOCATE BASIC TABLE ENTRY AND    #
                                   # GROUP ID AND SAVE RECORD NAME.    #
            LOST          NO /     # INVALID RECORD NAME GIVEN.        #
            MOVE-CLAUSE            # IF PRESENT, CRACK *MOVE* CLAUSE   #
                                   # AND BUILD *MOVETBL*.              #
            LOST          NO /     # ERRONEOUS *MOVE* CLAUSE.          #
            USI-CLAUSE             # BUILD *USING/SETTING* LIST AND    #
                                   # POINT BASIC TABLE TO IT.          #
            LOST          NO /     # ILLEGAL DATA- OR *FROM* FILE NAME.#
            MOVE-CLAUSE            # IF *MOVE* PRESENT, BUILD MOVE TBL #
                                   # AND POINT BASIC TABLE TO IT.      #
            LOST          NO /     # ERRONEOUS *MOVE* CLAUSE.          #
            SMR-FINIS              # CHECK FOR VALID DIRECTIVE AND SET #
                                   # *PASS/VETO* FLAGS.                #
            LOST          NO /YES  #                                   #
                                   #                                   #
                                   #---E N D---M O D I F Y-------------#
  
      :MOVE     :01 
            WRONGOVERLAY     / YES
  
      :OS       :01 
            WRONGOVERLAY     / YES
  
      :PAGE-NUMBER :01
            WRONGOVERLAY     / YES
  
      :PAGE-SIZE :01
            WRONGOVERLAY     / YES
  
      :PERFORM  :01                #-------P E R F O R M---------------#
                                   #                                   #
                                   # THIS SECTION HANDLES ONLY THE     #
                                   # CONTINUATION OF A *PERFORM* WHICH #
                                   # IS RETURNING FROM AN EXECUTION    #
                                   # OVERLAY.  IF A REAL *PERFORM* IS  #
                                   # ENCOUNTERED, *WRONGOVERLAY* WILL  #
                                   # SEND US TO THE OVERLAY QUALIFIED  #
                                   # TO CRACK A *PERFORM* DIRECTIVE.   #
                                   #                                   #
            *ENDBASC               # RELEASE BASIC-TABLE SPACE         #
            LOST          NO /     #                                   #
            *PERINIT      05 /     # INITIALIZE FOR *PERFORM*          #
            WRONGOVERLAY     /YES  # LOAD REAL *PERFORM* OVERLAY       #
                                   #                                   #
        :05 *PERBEGIN     YES/     # CONTINUE A *PERFORM*              #
            PERLOOP          /YES  # ENTER *PERFORM* LOOP              #
                                   #                                   #
                                   #----E N D-----P E R F O R M--------#
  
      :PREFACE  :01 
            WRONGOVERLAY     / YES
  
      :PREPARE  :01 
            WRONGOVERLAY     / YES
  
      :PREVIEW  :01 
            WRONGOVERLAY     / YES
  
      :RECAP    :01 
            WRONGOVERLAY     / YES
  
      :RECORDING :01
            WRONGOVERLAY     / YES
  
      :RECOVERY :01 
            WRONGOVERLAY     / YES
  
      :REMOVE  :01                 #---R E M O V E---------------------#
                                   #                                   #
                                   # THE *REMOVE* DIRECTIVE PERMANENTLY#
                                   # REMOVES ONE (OR MORE) RECORD(S)   #
                                   # FROM THE DATA BASE, DEPENDING ON  #
                                   # THE SEARCH KEY GIVEN IN THE       #
                                   # *USING* CLAUSE.                   #
                                   #                                   #
            *CKIMFOV               # STDYES IF IN CORRECT SMR OVERLAY  #
            WRONGOVERLAY     /     # LOAD CORRECT OVERLAY              #
            *UPDMODE               # CHECK IF IN READ-ONLY MODE.       #
            D307                   # R-O MODE DISABLES *REMOVE*.       #
            LOST          NO /     #                                   #
            SMR-INIT               # ALLOCATE BASIC TABLE ENTRY AND    #
                                   # GROUP ID AND SAVE RECORD NAME.    #
            LOST          NO /     # INVALID RECORD NAME GIVEN.        #
            USI-CLAUSE             # BUILD *USING/SETTING* LIST AND    #
                                   # POINT BASIC TABLE TO IT.          #
            LOST          NO /     # ILLEGAL DATA- OR *FROM* FILE NAME.#
            SMR-FINIS              # CHECK FOR VALID DIRECTIVE AND SET #
                                   # *PASS/VETO* FLAGS.                #
            LOST          NO /YES  #                                   #
                                   #                                   #
                                   #---E N D---R E M O V E-------------#
  
      :RETURN   :01 
            WRONGOVERLAY     / YES
  
      :REWIND   :01 
            WRONGOVERLAY     / YES
  
      :SELECT   :01 
            WRONGOVERLAY     / YES
  
      :SEPARATOR :01
            WRONGOVERLAY     / YES
  
      :SORT     :01 
            WRONGOVERLAY     / YES
  
      :SPECIFY  :01 
            WRONGOVERLAY     / YES
  
      :STORE  :01                  #---S T O R E-----------------------#
                                   #                                   #
                                   # THE *STORE* DIRECTIVE ADDS A NEW  #
                                   # RECORD TO THE DATA BASE AND       #
                                   # SUPPLIES VALUES WITH WHICH THE    #
                                   # NEW RECORD IS PRESET.             #
                                   #                                   #
            *CKIMFOV               # STDYES IF IN CORRECT SMR OVERLAY  #
            WRONGOVERLAY     /     # LOAD CORRECT OVERLAY              #
            *UPDMODE               # CHECK IF IN READ-ONLY MODE.       #
            D307                   # R-O MODE DISABLES *STORE*.        #
            LOST          NO /     #                                   #
            SMR-INIT               # ALLOCATE BASIC TABLE ENTRY AND    #
                                   # GROUP ID AND SAVE RECORD NAME.    #
            LOST          NO /     # INVALID RECORD NAME GIVEN.        #
            MOVE-CLAUSE            # CHECK AND PROCESS *MOVE* CLAUSE,  #
                                   # IF PRESENT.                       #
            LOST          NO /     # ERRONEOUS *MOVE* CLAUSE.          #
            $SETTING      15 /     # *SETTING* CLAUSE IS OPTIONAL.     #
            *SETSET                # REFLECT *SETTING* IN FLAGS AND    #
                                   # DIRECTIVE CODE.                   #
        :05 DATA-ATTRIB            # PICK UP *SETTING* LIST.           #
            D389                   # DATANAME MUST FOLLOW *SETTING*.   #
            LOST          NO /     #                                   #
            *SAVDATA               # SAVE ELEMENTARY ENTRY FOR THIS    #
                                   # ITEM IN *SETTING* LIST.           #
            LOST          NO /     # PROBLEM WITH *SETTING* LIST.      #
            *CHKNAME      10 / 05  # IF ANOTHER NAME, GO BACK AND ADD  #
                                   # TO LIST.                          #
        :10 $FROM         15 /     # IF *SETTING* DATA TO BE READ FROM #
                                   # A FILE.                           #
            LFN                    # CHECK FOR AND SAVE VALID FILE NAME#
            LOST          NO /     # INVALID FILE NAME.                #
            *SETFROM      NO /     # SAVE *FROM* FILE"S NAME AND *FIT* #
        :15 MOVE-CLAUSE            # *MOVE* AND *SETTING* MAY COME IN  #
                                   # EITHER ORDER, SO CHECK AGAIN.     #
            LOST          NO /     #                                   #
            SMR-FINIS              # CHECK FOR VALID DIRECTIVE AND SET #
                                   # *PASS/VETO* FLAGS.                #
            LOST          NO /YES  #                                   #
                                   #                                   #
                                   #---E N D---S T O R E---------------#
  
      :SUMMARY  :01 
            WRONGOVERLAY     / YES
  
      :TABS     :01 
            WRONGOVERLAY     / YES
  
      :TIME     :01 
            WRONGOVERLAY     / YES
  
      :TITLE    :01 
            WRONGOVERLAY     / YES
  
      :UNIVERSAL :01
            WRONGOVERLAY     / YES
  
      :UPDATE   :01 
            WRONGOVERLAY     / YES
  
      :USE      :01 
            WRONGOVERLAY     / YES
  
      :VERIFY   :01 
            WRONGOVERLAY     / YES
  
      :VERSION  :01 
            WRONGOVERLAY     / YES
  
      :VETO     :01 
            WRONGOVERLAY     / YES
  
      :VIA      :01 
            WRONGOVERLAY     / YES
  
      :WHERE    :01                #----W H E R E----------------------#
            *ISIT77                # IF WE ARE NOT PROCESSING RESTRICTS#
            D077          NO /YES  # THEN THIS IS A USER INITIATED CALL#
                                   # FOR *WHERE* WHICH IS ILLEGAL.     #
                                   #----E N D----W H E R E-------------#
  
#----------------------------------------------------------------------#
#                                                                      #
#         O T H E R   S Y N T A X   S E C T I O N S                    #
#         IN ALPHABETICAL ORDER                                        #
#                                                                      #
#----------------------------------------------------------------------#
  
      :MOVE-CLAUSE  :01            #---M O V E - C L A U S E-----------#
                                   #                                   #
                                   # *MOVE-CLAUSE* HANDLES THE *MOVE*  #
                                   # FOUND IN THE *STORE* AND *MODIFY* #
                                   # DIRECTIVES. IT IS NOT A SEPARATE  #
                                   # DIRECTIVE, SO A NEW BASIC TABLE   #
                                   # ENTRY AND CMM GROUP ID ARE NOT    #
                                   # ALLOCATED, BUT FURTHER PROCESSING #
                                   # IS VERY SIMILAR TO THAT OF THE    #
                                   # *MOVE* DIRECTIVE.                 #
                                   #                                   #
            $MOVE         YES/     # IF *MOVE* DOESN"T EXIST, EXIT IMM.#
            *SETMOVE      NO /     # CHECK IF 1ST *MOVE* AND ALLOCATE  #
                                   # SPACE FOR MOVE TABLE.             #
        :05 ABEXPR        NO /     # CRACK ARITH OR BOOL EXPRESSION.   #
            *MVEXP        NO /     # SAVE INFO ABOUT THE FROM FIELD.   #
            $TO                    #                                   #
            D392          NO /     # *TO* MUST SEPARATE EXPR AND DESTIN#
        :10 DATA-ATTRIB   NO /     # PICK UP *MOVE* DESTINATION, WHICH #
                                   # MUST BE VALID DATANAME.           #
            *MOVEXEC      NO /     # BUILD ENTRY IN *MOVETBL*.         #
            *CHKNAME      15 / 10  # IF ANOTHER DATANAME, GO BACK AND  #
                                   # BUILD ENTRY FOR IT, TOO.          #
        :15 $AND          YES/ 05  # *AND* INDICATES ANOTHER EXPR TO   #
                                   # MOVE, ELSE END OF *MOVE* CLAUSE.  #
                                   #                                   #
                                   #---E N D---M O V E - C L A U S E---#
  
  
  
  
      :SMR-FINIS  :01              #---S M R - F I N I S---------------#
                                   #                                   #
                                   # *SMR-FINIS* DOES THE VALIDITY     #
                                   # CHECKS FOR THE *STORE*, *MODIFY*, #
                                   # AND *REMOVE* DIRECTIVES AND SETS  #
                                   # *VETO/PASS* OPTIONS IF PRESENT.   #
                                   #                                   #
            *CHKSMR       NO /     # CHECK THAT EVERYTHING NEEDED FOR  #
                                   # THE DIRECTIVE WAS PROPERLY GIVEN. #
            $VETO                  # CHECK FOR *VETO* OR *PASS* OPTION.#
            $PASS         YES/     # IF NOT GIVEN, RETURN IMMEDIATELY. #
            *SETPV        YES      # OTHERWISE, SET PROPER FLAG BEFORE #
                                   # RETURNING.                        #
                                   #                                   #
                                   #---E N D---S M R - F I N I S-------#
  
  
  
  
      :SMR-INIT  :01               #---S M R - I N I T-----------------#
                                   #                                   #
                                   # *SMR-INIT* DOES THE INITIALIZATION#
                                   # FOR THE *STORE*, *MODIFY*, AND    #
                                   # *REMOVE* DIRECTIVES.  IT ALLOCATES#
                                   # A BASIC TABLE ENTRY AND CMM GROUP #
                                   # ID FOR THE CURRENT DIRECTIVE AND  #
                                   # INITIALIZES COMMON FLAGS AND PTRS.#
                                   # IF THE RECORD NAME IS GIVEN, IT   #
                                   # IS SAVED.                         #
                                   #                                   #
            *PERM            /     # POSITION TO NEXT ENTRY IN BASC TBL#
            *ALGRPID         /     # ALLOCATE CMM GROUP ID FOR THIS    #
                                   # DIRECTIVE AND SAVE IN BASICTABLE. #
            *CHKNAME      YES/     # LOOK FOR RECORD NAME.             #
            DATA-ATTRIB   NO /     # PICK UP RECORD NAME.              #
            *FRECNAM               # IF RECORD NAME IS LEGAL, SAVE ITS #
                                   # ADDRESS.                          #
            D191          NO /YES  # ILLEGAL RECORD NAME.              #
                                   #                                   #
                                   #---E N D---S M R - I N I T---------#
  
  
  
  
      :USI-CLAUSE  :01             #---U S I - C L A U S E-------------#
                                   #                                   #
                                   # *USI-CLAUSE* PROCESSES THE *USING/#
                                   # SETTING* COMBINATION CLAUSE IN    #
                                   # THE *MODIFY* AND *REMOVE* DIREC-  #
                                   # TIVES. THE *USING* CLAUSE MAY COME#
                                   # BEFORE, AFTER, OR BETWEEN         #
                                   # *SETTING* CLAUSES.  AN ELEMENTARY #
                                   # ENTRY IS SAVED FOR EACH ITEM IN   #
                                   # THE *SETTING* LIST (ITEMS TO BE   #
                                   # MODIFIED) AND FOR THE SEARCH KEY  #
                                   # SPECIFIED BY *USING*.  IF PRESENT,#
                                   # THE *FROM* CLAUSE NAMES THE INPUT #
                                   # FILE FOR THE *SETTING* AND *USING*#
                                   # LIST VALUES.                      #
                                   #                                   #
            $SETTING      10 /     # *SETTING* MAY COME BEFORE AND/OR  #
                                   # AFTER THE *USING*.                #
            *SETUSISET             # SET *SETTING* FLAGS               #
        :05 DATA-ATTRIB            # LOOK FOR *SETTING* LIST           #
            D389          NO /     # *SETTING* LIST MUST CONTAIN LEGAL #
                                   # DATANAME(S).                      #
            *SAVDATA      NO /     # SAVE THIS *SETTING* ITEM IN       #
                                   # ELEMENTARY ENTRY LIST             #
            *CHKNAME      10 / 05  # IF ANOTHER DATANAME IS UP NEXT,   #
                                   # GO ADD IT TO *SETTING* LIST.      #
        :10 $USING        20 /     # IF *USING* NOT PRESENT, SECOND    #
                                   # *SETTING* CAN-T BE EITHER.        #
            *SETUSI          /     # SET *USING* FLAGS.                #
            DATA-ATTRIB            # PICK UP SEARCH KEY.               #
            D390          NO /     # LEGAL DATANAME MUST BE GIVEN FOR  #
                                   # SEARCH KEY.                       #
            *SAVEUSI      NO /     # ADD ELEMENTARY ENTRY FOR SEARCH   #
                                   # KEY TO *USING/SETTING* LIST.      #
            $SETTING      20 /     # IF TRAILING *SETTING* IS PRESENT, #
            *SETUSISET             # PROCESS IT LIKE PREVIOUS ONE.     #
        :15 DATA-ATTRIB            #                                   #
            D389          NO /     #                                   #
            *SAVDATA      NO /     #                                   #
            *CHKNAME      20 / 15  #                                   #
        :20 $FROM         YES/     # CHECK IF *FROM* FILE SPECIFIED.   #
            LFN           NO /     # PICK UP FILE NAME AND CHECK FOR   #
                                   # LEGALITY.                         #
            *SETFROM      NO /YES  # SAVE *FROM* FILE"S NAME AND *FIT*.#
                                   #                                   #
                                   #---E N D---U S I - C L A U S E-----#
END 
