*DECK SYNGN05 
PROC SYNGN05
*CALL LEXID 
          + 
*CALL SUB05 
          + 
*CALL SYNGN00 
      :ACCESS   :01 
            WRONGOVERLAY     / YES
  
      :ALTER    :01 
            WRONGOVERLAY     / YES
  
      :BREAK    :01 
            WRONGOVERLAY     / YES
  
      :COMPILE  :01 
            WRONGOVERLAY     / YES
  
      :CREATE   :01                #-------C R E A T E-----------------#001720
                                   #                                   #001730
            *ENDBASC
            LOST           NO/
            *UPDMODE D307          # CHECK FOR -RO- MODE               #
            LOST           NO/
            *INITCRE         /     # INITIALIZE FOR THE CREATE         #
            *INV$TER         /     # TERMINATE ANY PREVIOUS IMF INVOKE #
            +NAME    D299 99 /     # MUST HAVE THE AREA NAME           #
            *SAVENAM         /     # SAVE AND SCAN THE NAME            #
            *SAVEAREA     99 /     # SAVE IN THE AREA NAME POSITION    #
            $INDEX        20 /     # TEST FOR INDEX KEYWORD            #
            -IS 
            +NAME  +SNW D020 99 /  # MUST BE THE INDEX NAME            #
            *SAVENAM         /
            *SAVEINDX     99 /     # SAVE THE INDEX NAME               #
        :20 $OF      D300 99 /     # OF IS REQUIRED KEYWORD            #
            +NAME  +SNW D020 99 /  # MUST BE THE SUB-SCHEMA NAME       #
            *SAVENAM         /
            *SAVESUB      99 /     # SAVE THE SUB-SCHEMA NAME          #
            $FROM         25 /     # CHECK FOR SUBSCHEMA LIBRARY       #000910
            $LIBRARY               # IF -FROM- PRESENT, -LIBRARY- MUST #000920
            D401          99 / 30  # KEYWORD -LIBRARY- EXPECTED        #000930
                                                                        000940
        :25 $LIBRARY      40 /     # -LIBRARY- MAY APPEAR SANS -FROM-  #000950
        :30 *SAVELIB         /     # SET -LIBRARY- FLAG                #
        :31 +NAME                  # MUST BE A LEGAL PF NAME           #
            D299          99 /                                          001760
            *SAVENAM         /     # SAVE NAME IN TEMP AREA            # SYNGN05
            *SAVESBLB     99 /     # STORE NAME IN SUB-SCHEMA FDB      #
        :40 *CHKSBN       99 /     # CHECK TO SEE IF SUB-SCHEMA NAME   #
                                   # HAS EMBEDDED HYPHENS              #
            $(            50 /     # LOOK FOR OPTIONAL PF PARAMETERS   #
            SCANPFP       NO /     # SCAN AND SAVE PF PARAMETERS       #026100
        :50 DBASE         99 /     # PROCESS DATABASE CLAUSE           #
        :60 +EOT                   # MUST BE AT END OF TRANSMISSION    #
            D302          99 /                                          001010
            *MODPFP       99 /     # GET PF PARAMETER MODIFICATIONS,   #026300
                                   # IF REQUESTED                      #026400
            *ENDUSEP         /YES  # LOAD THE (5,0) OVERLAY            #001020
                                                                        001030
        :99 *ABTUSE                # ERROR WAS FOUND, ABORT DIRECTIVE  #001040
            LOST          NO / NO  # SKIP REST OF TRANSMISSION         #001050
                                   #                                   #001060
                                   #-----E N D----C R E A T E----------#001070
  
      :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                #-----------I N V O K E-------------#
                                   #                                   #
                                   #                                   #
                                   # THIS SYNTAX SECTION IS SHARED     #
                                   # BETWEEN THE *CRM/CDCS* AND *IMF*  #
                                   # STYLES OF THE *INVOKE* DIRECTIVE. #
                                   #                                   #
                                   # THE SYNTAX ANALYSIS IS BROKEN INTO#
                                   # FOUR PARTS WHICH CAN BE RECOGNIZED#
                                   # BY THE SUBLABELS USED:            #
                                   #    :01-29  INITIALIZATION AND     #
                                   #            COMMON FRONT PART      #
                                   #    :30-59  SYNTAX SPECIFIC TO CDCS#
                                   #            AND CRM                #
                                   #    :60-89  SYNTAX SPECIFIC TO IMF #
                                   #    :90-99  COMMON END OF SYNTAX   #
                                   #            PROCESSING             #
  
  
            *ENDBASC               # RELEASE BASIC TABLE MEMORY        #
            LOST          NO /     # SKIP OVER TRANSMISSION            #
            *INITINV         /     # INITIALIZE FOR *CRM/CDCS* INVOKE  #
            *INV$TER         /     # TERMINATE ANY PREVIOUS IMF INVOKE #
            *INV$INI         /     # INITIALIZE FOR *IMF*  INVOKE      #
  
            $FOR          02 /     # CHECK START OF *FOR REPAIR*       #
            $REPAIR                # CHECK IF *FOR REPAIR* IS COMPLETE #
            D545          99 /     # DIAGNOSE *FOR* WITHOUT *REPAIR*   #
            *STINVRP               # SET FLAG FOR REPAIR MODE          #
  
                                   # NEXT TOKEN MUST BE A LEGAL NAME   #
                                   # OF EITHER THE SUBSCHEMA (CRM/CDCS)#
                                   # THE SUBSCHEMA LIBRARY (CRM/CDCS), #
                                   # OR THE EXTERNAL SCHEMA (IMF).     #
        :02 +NAME 
            D299          99 /     # DIAGNOSE ILLEGAL NAME             #
            *SAVENAM         /     # MOVE NAME TO TEMP AREA (TEMPNAME) #
            *SAVEXTS         /     # SAVE POSSIBLE EXTERNAL SCHEMA     #
                                   # NAME (IMF)                        #
  
            $OF           06 /     # CHECK FOR *OF* CLAUSE             #
            +NAME                  # VALIDATE LEGAL NAME               #
            D299          99 /     # DIAGNOSE ILLEGAL NAME             #
            *SAVSCH          /     # SAVE CONCEPTUAL SCHEMA NAME (IMF) #
  
        :06 $KEY          12 /     # CHECK FOR *KEY* CLAUSE (IMF)      #
            +LIT                   # LITERAL IS VALID KEY              #
            +NAME                  # NAME IS A VALID KEY               #
            D504          99 /     # DIAGNOSE MISSING KEY VALUE        #
            *SAVKEY          /     # SAVE KEY VALUE (IMF)              #
  
        :12 $IN                    # CHECK FOR *IN* (BOTH)             #
            $FROM         18 /     # CHECK FOR *FROM* (BOTH)           #
            *SETINFR         /     # REMEMBER IN/FROM WAS SEEN (BOTH)  #
  
        :18 $LIBRARY      20 / 30  # CHECK FOR *LIBRARY* (CRM/CDCS)    #
  
        :20 $METADB       21 / 60  # CHECK FOR *METADB* (IMF)          #
        :21 $METAIB       22 / 60  # AND *METAIB* (IMF)                #
  
        :22 *CHKINFR      24 /     # *YES* IF IN/FROM SPECIFIED        #
            D519          99 /     # DIAGNOSE IN/FROM REQUIRES METADB  #
                                   # OR LIBRARY TO BE SPECIFIED        #
        :24 *SAVESUB      99 / 32  # COPY SCHEMA NAME FROM *TEMPNAME*  #
                                   # TO *TAREA3* AND *TAREA5* (CRM/CDCS#
  
  
                                   #    SYNTAX SPECIFIC TO CRM/CDCS    #
  
                                   #                                   #
        :30 *SAVELIB         /     # SET -LIBRARY- FLAG                #
        :31 +NAME                  # VALIDATE SUBSCHEMA LIBRARY NAME   #
            D299          99 /     # DIAGNOSE ILLEGAL NAME             #
            *SAVESUB      99 /     # COPY SCHEMA NAME FROM *TEMPNAME*  #
                                   # TO *TAREA3* AND *TAREA5* (CRM/CDCS#
            *SAVENAM         /     # MOVE NAME TO TEMP AREA (TEMPNAME) #
            *SAVESBLB     99 /     # PUT NAME IN *TAREA3*              #
        :32 *CHKSBN       99 /     # RETURN *STDNO* IF SUBSCHEMA IS A  #
                                   # PF AND HAS EMBEDDED HYPHENS       #
            $(            35 / 34  # CHECK FOR PF PARAMS (CRM/CDCS)    #
  
        :34 SCANPFP       91 /     # SCAN AND SAVE PF PARAMETERS       #
        :35 *CHKREPM      36 /     # CHECK IF *FOR REPAIR* SPEC.       #
            D544          99 /     # DIAGNOSE *FOR REPAIR* INVALID     #
                                   # FOR CRM/CDCS *INVOKE*             #
  
        :36 DBASE         99 / 40  # PROCESS DATABASE CLAUSE           #
        :40 +EOT                   # CHECK FOR EXPECTED EOT            #
            D302          99 /     # DIAGNOSE SOMETHING EXTRA          #
            *MODPFP       99 /     # MODIFY PF PASSWORDS               #
  
        :59 *CHKCRCD      99 / 98  # *NO* IF ILLEGAL SYNTAX ENCOUNTERED#
  
                                   #       END OF CRM/CDCS SYNTAX      #
  
  
                                   #     SYNTAX SPECIFIC TO IMF        #
                                   #                                   #
  
        :60 +NAME                  # VALIDATE METADB NAME              #
            D299          99 /     # DIAGNOSE ILLEGAL NAME             #
            *SAVS            /     # STORE PF NAME                     #
            +NAME         62 /     # TEST FOR OPTIONAL ID OR UN        #
            *SAVDBN          /     # STORE PF ID/UN                    #
  
        :62 $PW           64 /     # CHECK IF *PW* SUPPLIED            #
            +LIT                   # CHECK LITERAL PASSWORD            #
            +NAME                  # CHECK NAME-TYPE PASSWORD          #
            D504          99 /     # DIAGNOSE INVALID PASSWORD LITERAL #
            *SAVPW           /     # STORE PASSWORD LITERAL            #
        :64 *CHKIMF       99 /     # *NO* IF ILLEGAL SYNTAX ENCOUNTERED#
            *INV$EXE      99 / 98  # EXECUTE IMF INVOKE DIRECTIVE      #
  
                                   #                                   #
                                   #     END OF IMF SYNTAX             #
  
  
        :91 D146          99 /     # UNKNOWN PF PARAMETERS             #
  
        :98 *ENDUSEP         /YES  # FREE UNUSED TAREAS AND LOAD       #
                                   # (5,0) OVERLAY TO UNDO ANY PREVIOUS#
                                   # USE/INVOKE, AND MOVE TABLES DOWN  #
                                   # FOR IMF.                          #
  
        :99 *ABTUSE          / NO  # ABORT THIS ILLEGAL INVOKE, RELEASE#
                                   # ASSOCIATED CM.                    #
  
                                   #                                   #
                                   #----------E N D---I N V O K E------#
  
  
  
      :LOOKUP   :01 
            WRONGOVERLAY     / YES
  
      :MODIFY   :01 
            WRONGOVERLAY     / YES
  
      :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 
            WRONGOVERLAY     / YES
  
      :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 
            WRONGOVERLAY     / YES
  
      :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                    #-------U S E-----------------------#002210
                                   #                                   #002220
            *ENDBASC               # RELEASE BASIC TABLE MEMORY        # SYNGN05
            LOST          NO /     # SKIP OVER TRANSMISSION            # SYNGN05
            *INITUSE         /     # INITIALIZE FOR THE USE DIRECTIVE  #
            *INV$TER         /     # TERMINATE ANY PREVIOUS IMF INVOKE #
                                   # FIRST ITEM MUST BE A NAME OF A    #
            +NAME                  # PF OR RELATION, ELSE ERROR        # SYNGN05
            D299          99 /     # ITS NOT, ISSUE ERROR              # SYNGN05
            *SAVENAM         /     # MOVE NAME TO TEMP AREA (TEMPNAME) # SYNGN05
            $MODIFIED     10 /     # IF *MODIFIED*, ITS A RELATION NAME# SYNGN05
            *SAVEMODF        /     # SET THE FLAG FOR MODIFY FOUND     #
            *INITREL         /     # INITIALIZE FOR RELATION           #
            *SAVEREL         / 60  # PUT RELATION NAME IN TAREA4       # SYNGN05
                                                                         SYNGN05
        :10 +NAME         12 / 50  # IF ANOTHER NAME, ITS RELATIONS    # SYNGN05
        :12 +EOT          20 /     # IF AT EOT, IT IS A SUBSCHEMA NAME #002240
            *SAVESUB      99 / 90  # PUT SUBSCHEMA NAME IN TAREA3      # SYNGN05
                                                                         SYNGN05
        :20 $(            22 / 24  # CHECK FOR START OF PF PARAMS      # SYNGN05
        :22 *STEMPAR         / 40  # AREA OR SUBSCHEMA NAME TO TAREA1  # SYNGN05
                                                                         SYNGN05
        :24 *SAVEAREA     99 /     # AREA OR SUBSCHEMA NAME TO TAREA1  # SYNGN05
            SCANPFP       NO /     # SCAN AND SAVE PF PARAMETERS       #
            +EOT          40 /     # IF AT EOT, ITS SUBSCHEMA ONLY     # SYNGN05
            *SUBONLY         / 90  # CHANGE TAREA3 TO POINT TO TAREA1  # SYNGN05
                                                                         SYNGN05
        :40 $INDEX        60 /     # CHECK FOR *INDEX*                 # SYNGN05
            -IS                    # SKIP OVER OPTIONAL *IS*           # SYNGN05
            +NAME                  # NEXT ITEM MUST BE NAME            # SYNGN05
            +SNW                   # NEXWORD TO CURWORD                # SYNGN05
            D020          99 /     # DIAGNOSE ILLEGAL PFN              # SYNGN05
                                                                         SYNGN05
            *SAVENAM         /     # MOVE NAME TO TEMP AREA            # SYNGN05
            *SAVEINDX     99 /     # INDEX NAME TO TAREA2              # SYNGN05
            $(            60 /     # CHECK FOR PF PARAMS               # SYNGN05
            SCANPFP       NO / 60  # SCAN AND SAVE PF PARAMETERS       # SYNGN05
                                                                         SYNGN05
        :50 *INITREL         /     # INITIALIZE RELATION NAME LIST     #
            *SAVEREL         /     # SAVE RELATION NAME IN TNAME       #
            *SAVENAM         /     # MOVE THIS NAME TO TNAME ARRAY     #
            *SAVEREL         /     # SAVE THE RELATION NAME            #
        :52 +NAME         55 /     # LOOK AT NEXT ITEM                 #
            *SAVENAM         /     # MOVE THIS NAME TO TNAME ARRAY     #
            *SAVEREL         / 52  # SAVE RELATION NAME                #
        :55 $MODIFIED     60 /     # CHECK FOR *MODIFIED*              # SYNGN05
            *SAVEMODF        /     # SET *MODIFY* FLAG                 # SYNGN05
                                                                         SYNGN05
        :60 $OF                    # **OF SUBSCHEMA NAME** MUST APPEAR # SYNGN05
            D300          99 /     # DIAGNOSE MISSING *OF*             # SYNGN05
            +NAME                  # NEXT ITEM MUST BE NAME            # SYNGN05
            +SNW                   # NEXWORD TO CURWORD                # SYNGN05
            D020          99 /     # DIAGNOSE ILLEGAL PFN              # SYNGN05
            *SAVENAM         /     # MOVE NAME TO TEMP AREA            # SYNGN05
            *SAVESUB      99 /     # MOVE SUBSCHEMA NAME TO *TAREA3*   #002270
            $(            78 /     # CHECK FOR PF PARAMETERS           #002280
            SCANPFP       NO /     # SCAN AND SAVE PF PARAMETERS       # SYNGN05
        :78 +EOT                   # EOT EXPECTED HERE                 # SYNGN05
            D302          99 /     # DIAGNOSE SOMETHING TOO MUCH       # SYNGN05
                                                                         SYNGN05
        :90 *MODPFP       99 /     # GET PF PARAMETER MODIFICATIONS,   #027000
                                   # IF REQUESTED                      #027100
            *ENDUSEP         /YES  # FREE UNUSED TAREA-S, LOAD (5,0)   #027200
                                                                         SYNGN05
        :99 *ABTUSE                # ERROR WAS FOUND, ABORT *USE*      # SYNGN05
            LOST          NO / NO                                        SYNGN05
                                   #                                   #002300
                                   #-----E N D----U S E----------------#002310
  
      :VERIFY   :01 
            WRONGOVERLAY     / YES
  
      :VERSION  :01                #-------V E R S I O N---------------#129000
                                   #                                   #129100
            *ENDBASC               # RELEASE BASIC TABLE MEMORY        #129200
            LOST          NO /     # SKIP OVER TRANSMISSION            #129300
            *CRECFLG               # CHECK IF RECORDING, IF SO - ERROR #129400
            D172          NO /     # -VERSION- CANNOT BE RECORDED      #129500
            *INITVER         /     # INITIALIZE FOR -VERSION-          #129600
            -IS                    # SKIP OPTIONAL -IS-                #129700
            $DEFAULT      10 / 90  # IF -DEFAULT-, GO ON               #129800
        :10 +NAME                  # CHECK FOR VALID NAME              #129900
            +SNW                                                        130000
            D020          99 /                                          130100
            *SAVENAM         /     # MOVE NAME TO TEMP AREA            #130200
            *SAVEAREA     99 /     # MOVE NAME TO *TAREA1*             #130300
            $OF           80 /     # IF KEYWORD -OF-, GET SUBSCHEMA    #130400
                                   # AND SUBSCHEMA LIBRARY             #130500
            +NAME                  # CHECK FOR VALID NAME              #130600
            D299          99 /                                          130700
            *SAVENAM         /     # MOVE NAME TO TEMP AREA            #130800
            *SAVESUB      99 /     # PUT NAME IN *TAREA3* AND *TAREA5* #130900
            *INV$TER         /     # TERMINATE ANY PREVIOUS IMF INVOKE #
                                   # BECAUSE SYNTAX IMPLIES THIS IS A  #
                                   # CDCS VERSION                      #
  
                                                                        131000
            $FROM         22 /     # CHECK OPTIONAL -FROM- KEYWORD     #131100
            $LIBRARY               # KEYWORD -LIBRARY- EXPECTED HERE   #131200
            D401          99 / 24                                       131300
                                                                        131400
        :22 $LIBRARY      80 /     # -LIBRARY- MAY OR MAY NOT BE HERE  #131500
        :24 *SAVELIB         /     # SET -LIBRARY- FLAG                #
        :25 +NAME                  # CHECK FOR VALID NAME              #
            D299          99 /                                          131700
            *SAVENAM         /     # MOVE NAME TO TEMP AREA            #131800
            *SAVESBLB     99 /     # PUT NAME IN *TAREA3*              #131900
                                                                        132000
        :80 *CHKSBN       99 /     # RETURN *STDNO* IF SUB-SCHEMA IS A #
                                   # PF AND HAS EMBEDDED HYPHENS       #
            +EOT          82 / 90  # CHECK IF END OF TRANSMISSION      #
        :82 -(                     # PARENS ARE OPTIONAL               #132200
            SCANPFP       85 /     # SCAN AND SAVE PF PARAMETERS       #
            *MODPFP       99 /     # GET PF PARAMETER MODIFICATIONS,   #
                                   # IF REQUESTED                      #
        :85 DBASE         99 /     # PROCESS DATABASE CLAUSE           #
                                                                        132400
        :90 *ENDUSEP      99 /YES  # GO TO (5,0) OVERLAY               #132500
                                                                        132600
        :99 *ABTVER          /     # ABORT -VERSION- DIRECTIVE         #132700
            LOST          NO / NO  # SKIP REST OF TRANSMISSION         #132800
                                   #                                   #132900
                                   #-----E N D----V E R S I O N--------#133000
  
      :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                                         #
#                                                                      #
#----------------------------------------------------------------------#
      :DBASE :01                   #------------ D B A S E ------------#
                                   #                                   #
        :05 $FOR          10 /     # IS OPTIONAL -FOR- PRESENT         #
            $DATABASE              # KEYWORD -DATABASE- EXPECTED       #
            D420          NO / 15  # -DATABASE- MUST FOLLOW -FOR-      #
        :10 $DATABASE     YES/     #-DATABASE- MAY OR MAY NOT BE STATED#
        :15 +NAME                  # CHECK FOR NAME                    #
            D415          NO /     # INPUT NAME NOT VALID              #
        :20 *DBVCHK       NO /YES  # CHECK VER. NAME AND STORE IF VALID#
                                   #                                   #
                                   #--------- E N D  D B A S E --------#
  
  
      :SCANPFP  :01                # SCAN AND SAVE THE PERMANENT       #
                                   # FILE PARAMETERS                   #
            *INITPFP         /     # INITIALIZE FOR SCANNING           #
  
IFEQ OS$NAME,SCOPE
        :05 $)            10 / YES # USE DEFAULT NOS/BE PARAMETERS     #
  
        :10 $ID           15 /     # CHECK FOR THE ID PARAMETER        #
            -IS -=                 # SKIP OPTIONAL KEYWORDS            #
            +INT                   # ID MAY BE AN INTEGER              #
            +NAME +SNW D185 99 /   # MUST HAVE A NAME                  #
            *PROCID       99 / 90  # SAVE THE ID IF VALID,  ELSE ERROR #
  
        :15 $CY           20 /     # CHECK FOR CYLCLE NUMBER           #
            -IS -=
            +INT +SNW D186 99 /    # MUST HAVE A NUMBER                #
            *PROCCY       99 / 90  # SAVE CYCLE NUMBER IF VALID        #
  
        :20 $MR           25 /     # CHECK FOR MR PARAMETER            #
            -IS -=
            +INT +SNW D303 99 /    # MUST HAVE A NUMBER                #
            *PROCMR       99 / 90  # SAVE THE  MR  PARAMETER           #
  
        :25 $SN           35 /     # CHECK FOR SET NAME PARAMETER      #
            -IS -=
            +NAME  +SNW D250 99 /  # MUST BE A NAME                    #
            *PROCSN       99 / 90  # SAVE THE SET NAME PARAMETERS      #
  
  
        :35 $PW           40 /     # SAVE THE PASS WORDS IF PRESENT    #
            -IS -=
            $)            36 /     # CHECK FOR BARE -PW-               #
            *SAVEMODF        /YES  # SET FLAG TO ASK FOR INPUT         #
        :36 +INT                   # PASSWORD MAY BE AN INTEGER        #
            +NAME +SNW D145 99 /   # MUST BE A NAME                    #
        :37 *PROCPW       99 /     # SAVE THE PW IF VALID, ELSE ERROR  #
            +NAME         90 / 37  # LOOP TILL ALL PW PROCESSED        #
  
  
        :40 $RW           45 /     # CHECK FOR THE *RW* PARAMETER SO   #
                                   # USER CAN UPDATE FILE AND ALLOW    #
                                   # CONCURRENT READERS                #
            -IS                    # IGNORE OPTIONAL KEYWORD           #
            -=                     # IGNORE OPTIONAL KEYWORD           #
            +INT                   # CHECK FOR REQUIRED INTEGER VALUE  #
            +SNW
            D051          99 /     # DIAGNOSE NON-INTEGER VALUE        #
            *PROCRW       99 / 90  # PROCESS RW PARAMETER, ELSE ERROR  #
  
        :45 $LC           50 /     # CHECK FOR LOW CYCLE SPECIFICATION #
            -IS                    # IGNORE OPTIONAL KEYWORD           #
            -=                     # IGNORE OPTIONAL KEYWORD           #
            +INT                   # CHECK FOR REQUIRED INTEGER VALUE  #
            +SNW
            D051          99 /     # DIAGNOSE NON-INTEGER VALUE        #
            *PROCLC       99 / 90  # PROCESS LC PARAMETER, ELSE ERROR  #
  
                                   # ADD NEW PARAMETERS HERE           #
        :50               NO / NO  # UNKNOWN PF PARAMETER              #
  
ENDIF 
  
  
IFEQ OS$NAME,NOS
        :05 $)            10 /     # IF NO PARAMETERS GIVEN...         #
            *PROCDFL      YES/ YES # USE DEFAULT NOS USER NUMBER       #
  
        :10 $UN           15 /     # LOOK FOR USER NUMBER              #
            -IS -=
            +INT                   # MUST BE AN INTEGER OR             #
            +NAME +SNW D303 99 /   # MUST BE A NAME                    #
            *PROCUN       99 / 90  # SAVE THE UN IF VALID, ELSE ERROR  #
  
        :15 $PW           20 /     # LOOK FOR THE PASS WORD            #
            -IS -=
            $)            18 /     # CHECK FOR BARE -PW-               #
            *SAVEMODF        /YES  # SET FLAG TO ASK FOR INPUT         #
        :18 +INT                   # MUST BE AN INTEGER OR             #
            +NAME +SNW D303 99 /   # MUST BE A NAME                    #
            *PROCPWK      99 / 90  # SAVE THE PW IF VALID, ELSE ERROR  #
  
        :20 $M            25 /     # LOOK FOR MODE PARAMETER           #
            -IS -=
            +NAME                  # MUST BE A NAME                    #
            $M                     # M = M IS VALID                    # QU30283
            $R                     # M = R IS VALID                    #
            +SNW     D303  99/     # IF NOT A NAME                     #
            *PROCM        99 / 90  # SAVE THE M PARAMETER IF VALID     #
  
        :25 $PN          30 /      # LOOK FOR PN PARAMETER             #
            -IS -=
            +INT                   # MUST BE AN INTEGER, OR            #
            +NAME +SNW D291 99 /   # MUST BE A NAME                    #
            *PROCPN      99 / 90   # SAVE THE PN IF VALID,ELSE ERROR   #
  
        :30 $R           35 /      # LOOK FOR R PARAMETER              #
            -IS -=
            +NAME +SNW D292 99 /   # MUST BE A NAME                    #
            *PROCR        99 / 90  # SAVE THE R IF VALID, ELSE ERROR   #
  
                                   # ADD NEW PARAMETERS HERE           #
        :35               NO / NO  # UNKNOWN PF PARAMETER              #
ENDIF 
  
  
                                   # LOOK FOR THE REQUIRED -)-         #
        :90 $)            92 / YES # FOUND THE CLOSE )    RETURN       #
        :92 +EOT          10 /     # CHECK FOR EOT IF NOT LOOP         #
            *CKVERDR D062 99 / YES # IF VERSION DIR NO ) REQUIRED      #
  
  
        :99 *ABTUSE LOST NO  /     # HAVE UNKOWN PF PARAMETER          #
                    LOST NO  /     # ABORT THE USE NOW                 #
  
  
END 
