*DECK DMLSYN                                                            017850
PROC DMLSYN                                                             007980
ASSIGNID                             425                    ID STAR TEST
BEGINTRAN                            422                    ID STAR TEST
BOOLEAN                              145                                003380
CLOSE                                101                                017860
COMMITTRAN                           423                    ID STAR TEST
COMPLEX                              133                                000190
DELETE                               102                                017870
DOUBLE                               136                                000260
DROPTRAN                             424                    ID STAR TEST
END                                  103                                017880
EQ                                   121               00500 P2 . TEST  000260
ERR                                  104                                017890
FINDTRAN                             427                    ID STAR TEST
FUNCTION                             141                                000150
GE                                   122               00500 P2 . TEST  000280
GT                                   123               00500 P2 . TEST  000290
I                                    105                                017900
INTEGER                              134                                000210
INVOKE                               420                    ID STAR TEST000310
IO                                   106                                017910
KEY                                  107                                017920
LOCK                                 110                                017930
LOGICAL                              135                                000240
MODE                                 111                                017940
NEWVERSION                           426                    ID STAR TEST
O                                    130                                017950
OPEN                                 112                                017960
PRECISION                            137                                000280
PRIVACY                              113                                017970
PROGRAM                              142                                000130
READ                                 114                                017980
REAL                                 140                                000300
REWRITE                              115                                017990
START                                146
SUBROUTINE                           132                                000170
SUBSCHEMA                            116                                018000
TERMINATE                            421                    ID STAR TEST000330
TYPE                                 150
UNLOCK                               117                                018010
VERSION                              160
WRITE                                120                                018020
.                                    131                                000960
)                                    124                                018060
,                                    125                                018070
(                                    126                                018080
=                                    127                                018090
+                                                                       018100
DMLEND                                                                  018110
SAVENAME                                                                018120
COMMENT                                                                 018130
COPYSS                                                                  018140
FTNCHK
DMLERROR                                                                018160
DMLINIT 
REALMORD                                                                018170
MODESTORE                                                               018180
OPENCALL                                                                018190
CLOSECALL                                                               018200
STARTCALL 
READCALL                                                                018210
WRITECALL                                                               018220
RECORDORD                                                               018230
PKEYORD                                                                 018240
DELETECALL                                                              018250
REWRITECALL                                                             018260
VERSCALL
SAVERS
BEGINCALL 
SAVBEGID
COMMITCALL
DROPCALL
ASSIGNCALL
SAVRID
FINDCALL
SAVTYP
SAVEREALM                                                               018270
ACCESSREALM                                                             018280
REALMRELORD                                                             018290
STKEYCK 
KEYOPR                                                                  018300
KEYNAME                                                                 018310
READKEY 
ERRRTRN 
ENDRTRN 
SAVEPGMNAME                                                             000320
DEFAULTNAME                                                             000330
DATAPGMNAME                                                             000340
FITCALL                                                                 000350
FITLISTCALL                                                             000360
INVOKECALL                                                              000380
TERMCALL                                                                000390
LOCKCALL                                                                000940
UNLOCKCALL                                                              000950
PRIVACYCALL                                                             000960
SAVEMODE                                                                000970
SAVEPRIV                                                                000980
NOCOMMENT                                                               000170
SETLIT                                                                  000330
ENDOFPROG                                                               000170
+                                                                       018320
:ROOT:01          +EOS        03  # NOTE +EOS ALSO RETURNS TRUE IF EOT #000240
            /     D100        *DMLEND                                   018340
          :03     PGMNAME                                               000430
          :05     SUBSCHEMA   *DMLEND                                   018350
            /     DML         *DMLEND                                   018360
            /     05                                                    018370
:PGMNAME:01       $PROGRAM  $FUNCTION  $SUBROUTINE  05                  000450
          :03     +FNAME           # CHECK FOR VALID FORTRAN NAME      #
                  *DEFAULTNAME   NO 
            /     *SAVEPGMNAME                                          003340
            /     +SNS                                                  000470
            /     NO
          :05     $REAL  $INTEGER  $COMPLEX  $LOGICAL  $BOOLEAN  10     003360
            /     $FUNCTION  *DEFAULTNAME  +SNS  NO                     000170
            /     03                                                    000510
          :10     $DOUBLE     *DEFAULTNAME  NO                          000520
            /     -PRECISION  $FUNCTION  *DEFAULTNAME  +SNS  NO         000530
            /     03                                                    000540
:SUBSCHEMA:01     +EOS        # CLEAR DML-S DUPLICATE EOS, IF PRESENT  #008000
            /     $SUBSCHEMA  20                                        008010
            /     *COMMENT                                              018390
            /     $(          +SNS  D101  10                            018400
            /     +NAME       +SNS  D102  10                            018410
            /     *SAVENAME                                             018420
            /     $)          +SNS  D103  10                            018430
            /     *COPYSS     +SNS # OPEN SS, COPY ITEM STMTS TO SSOUT #
                  D111        10   # IF SS NOT FOUND PRINT ERROR       #
            /     *FTNCHK     +SNS # ARE SS AND PREPASS FTN VER SAME   #
                  D127        10   # NO, PRINT DIAG + DML ERROR MSG    #
            /     +EOS        +SNS  D104  10                            018440
            /     YES                                                   018460
          :10     *DMLERROR                                             018470
            /     01                                                    001120
          :20     $END        25                                        000580
            /     +EOS        +SNS  01                                  000590
            /     +EOS        # CLEAR DML-S DUPLICATE EOS, IF PRESENT  #008030
            /     +EOT        PGMNAME  01                               000600
            /     NO                                                    000610
          :25     +EOT         +SNS  01                                 018490
            /     NO                                                    018500
:DML:01           +EOS        # CLEAR DML-S DUPLICATE EOS, IF PRESENT  #008050
            /     *DMLINIT    # INITIALIZE VARIABLES                   #
            /     $READ       10                                        008060
            /     READ                                                  018520
            /     01                                                    018530
          :10     $WRITE       20                                       018540
            /     WRITE                                                 018550
            /     01                                                    018560
          :20     $OPEN         25
            /     OPEN                                                  018580
            /     01                                                    018590
          :25     $NEWVERSION   30
            /     VERSION 
            /     01
          :30     $CLOSE       60                                       018600
            /     CLOSE                                                 018610
            /     01                                                    018620
          :60     $DELETE      70                                       018630
            /     DELETE                                                018640
            /     01                                                    018650
          :70     $REWRITE      71
            /     REWRITE                                               018670
            /     01                                                    018680
          :71     $BEGINTRAN    72
            /     BEGINTR 
            /     01
          :72     $COMMITTRAN   73
            /     COMMIT
            /     01
        :73       $DROPTRAN     75
            /     DROP
            /     01
          :75     $ASSIGNID     77
            /     ASSIGN
            /     01
          :77     $FINDTRAN     79
            /     FIND
            /     01
          :79     $START        80
            /     START 
            /     01
          :80     $INVOKE      90                                       000690
            /     INVOKE                                                000700
            /     01                                                    000710
          :90     $TERMINATE   92                                       000130
            /     TERMINATE                                             000730
            /     01                                                    000740
          :92     $LOCK        94                                       000150
            /     LOCK                                                  000160
            /     01                                                    000170
          :94     $UNLOCK      96                                       000180
            /     UNLOCK                                                000190
            /     01                                                    000200
          :96     $PRIVACY     40                                       000210
            /     PRIVACY                                               000220
            /     01                                                    000230
          :40     $END         50                                       018690
            /     +EOS         +SNS  01                                 018700
            /     +EOS        # CLEAR DML-S DUPLICATE EOS, IF PRESENT  #008080
            /     *ENDOFPROG D105  *DMLERROR                            000150
            /     +EOT        PGMNAME  YES                              000630
            /     NO                                                    018720
          :50     +EOT         +SNS  01                                 018730
            /     NO                                                    018740
                                                                        000250
# ** DML STATEMENT ROUTINES **                                         #000260
# EACH PROCESSES ONE SPECIFIC DML STATEMENT.                           #000270
# CALLED WHEN THAT KEYWORD IS FOUND AT THE START OF A STATEMENT.       #000280
# IF NOT A DML STATEMENT (FIRST PAR NOT RECOGNIZED REALM NAME),        #000290
# STOPS PROCESSING STATEMENT, POSITIONS PAST STATEMENT, RETURNS YES.   #000300
# PROCESSES PARAMETERS, OR CALLS PARAMETER ROUTINES TO DO THAT, CALLS  #000310
# SYMPL ROUTINES TO SAVE PARAMETERS AND ISSUE OUTPUT LINES,            #000320
# POSITIONS PAST STATEMENT, RETURNS YES.                               #000330
# ON ERROR, POSITIONS PAST STATEMENT, ISSUES DIAG, RETURNS YES.        #000340
                                                                        000350
:OPEN:01          $(           +SNS  YES                                018750
            /     +NAME        +SNS  YES                                018760
            /     *SAVEREALM                                            018770
            /     *REALMRELORD +SNS  YES
            /     *COMMENT                                              018790
  
          :10     $,           60    # CHECK FOR MORE PARAMETERS       #
          :30     $MODE        40    # MODE PARAMETER                  #
            /     MODEPAR      50 
            /     10
  
          :40     $ERR               # ERROR PARAMETER                 #
                  *DMLERROR    D122  50 
            /     ERRPAR       50 
            /     10
  
          :50     SKIPERR      YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     30                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :60     $)           70 
            /     +EOS         +SNS  D104  99 
            /     *OPENCALL 
            /     YES 
  
          :70     +EOS         80    # CHECK FOR END OF STATEMENT      #
            /     D103         99    # YES, MISSING PARENTHESIS        #
  
          :80     SKIP         YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     30                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :99     *DMLERROR 
                  YES                                                   018900
:CLOSE:01         $(           +SNS  YES                                018910
            /     +NAME        +SNS  YES                                018920
            /     *SAVEREALM                                            018930
            /     *REALMRELORD +SNS  YES
            /     *COMMENT                                              018950
  
          :10     $,           40    # CHECK FOR MORE PARAMETERS       #
  
          :20     $ERR               # ERROR PARAMETER                 #
                  *DMLERROR    D122  30 
            /     ERRPAR       30 
            /     10
  
          :30     SKIPERR      YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20                 # COMMA FOND, CHECK FOR NEXT PARM# 
  
          :40     $)           50 
            /     +EOS         +SNS  D104  99 
            /     *CLOSECALL
            /     YES 
  
          :50     +EOS         60    # CHECK FOR END OF STATEMENT      #
            /     D103         99    # YES, MISSING PARENTHESIS        #
  
          :60     SKIP         YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :99     *DMLERROR 
                  YES                                                   019010
                                     #---------START STATEMENT---------#
:START:01         $(           +SNS  # CHECK FOR PARENTHESIS           #
                  YES 
            /     +NAME        +SNS  # VALID NAME                      #
                  YES 
            /     *SAVEREALM         # SAVE REALM OR RELATION NAME     #
            /     *REALMRELORD +SNS  # SAVE REALM OR RELATION ORDINAL  #
                  YES 
            /     *COMMENT           # MAKE STATEMENT A COMMENT        #
  
          :10     $,           50    # CHECK FOR MORE PARAMETERS       #
  
          :20     $KEY         30    # KEY PARAMETER                   #
            /     $=           22    # CHECK FOR EQUAL SIGN            #
            /     *KEYOPR            # YES, CONVERT AND STORE OPERATOR #
            /     24
          :22     $.                 # CHECK FOR RELATIONAL OPERATOR   #
                  D114               # NO, INVALID RELATIONAL OPERATOR #
                  *DMLERROR    40 
            /     $EQ $GT $GE 
                  D114               # NO, INVALID RELATIONAL OPERATOR #
                  *DMLERROR    40 
            /     *KEYOPR            # STORE THE KEY OPERATOR          #
            /     $.
                  D117               # PERIOD MISSING                  #
                  *DMLERROR    40 
  
          :24     +FNAME             # CHECK FOR FORTRAN NAME          #
                  +NAME              # CHECK FOR VALID NAME            #
                  D115               # INVALID ITEM NAME               #
                  *DMLERROR    40 
  
          :26     *KEYNAME           # STORE ITEM NAME                 #
                  D116               # ITEM IS NOT DEFINED AS KEY      #
                  *DMLERROR    40 
            /     $,           50    # CHECK FOR MORE ITEMS            #
          :30     $ERR         35    # ERROR PARAMETER                 #
            /     ERRPAR       40 
            /     10
  
          :35     +FNAME             # CHECK FOR FORTRAN NAME          #
                  D122               # NO, INVALID PARAMETER           #
                  *DMLERROR    40 
            /     26
  
  
          :40     SKIPERR      YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20
  
          :50     $)           60    # ENDING PARENTHESIS              #
            /     +EOS         +SNS 
                  D104         99 
            /     *STKEYCK           # IF A KEY HAS NOT BEEN SPECIFIED #
                  *KEYNAME           # USE THE PRIMARY KEY             #
            /     *STARTCALL         # GENERATE START CALL STATEMENT   #
            /     YES 
  
          :60     +EOS         70    # CHECK FOR END OF STATEMENT      #
            /     D103         99    # YES, MISSING PARENTHESIS        #
  
          :70     SKIP         YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :99     *DMLERROR    YES
  
                                     #---------READ STATEMENT----------#
:READ:01          $(           +SNS  YES                                019020
            /     +NAME        +SNS  YES                                019030
            /     *SAVEREALM                                            019040
            /     *REALMRELORD +SNS  YES                                019050
            /     *COMMENT                                              019060
  
          :10     $,           60    # CHECK FOR MORE PARAMETERS       #
  
          :20     $KEY         30    # KEY PARAMETER                   #
            /     KEYPAR       50 
            /     10
  
          :30     $ERR         40    # ERROR PARAMETER                 #
            /     ERRPAR       50 
            /     10
  
          :40     $END               # END PARAMETER                   #
                  *DMLERROR    D122  50 
            /     ENDPAR       50 
            /     10
  
          :50     SKIPERR      YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20
  
          :60     $)           70 
            /     +EOS         +SNS  D104  99 
            /     *READCALL 
            /     YES 
  
          :70     +EOS         80    # CHECK FOR END OF STATEMENT      #
            /     D103         99    # YES, MISSING PARENTHESIS        #
  
          :80     SKIP         YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :99     *DMLERROR 
                  YES                                                   019180
:WRITE:01         $(           +SNS  YES                                019190
            /     +NAME        +SNS  YES                                019200
            /     *SAVEREALM                                            019210
            /     *REALMORD    +SNS  YES                                019220
            /     *COMMENT                                              019230
          :10     $,           40    # CHECK FOR MORE PARAMETERS       #
  
          :20     $ERR               # ERROR PARAMETER                 #
                  *DMLERROR    D122  30 
            /     ERRPAR       30 
            /     10
  
          :30     SKIPERR      YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :40     $)           50 
            /     +EOS         +SNS  D104  99 
            /     *RECORDORD   D118  99  # INTERNAL DML ERROR          #
            /     *ACCESSREALM D118  99 
            /     *PKEYORD     D118  99 
            /     *WRITECALL                                            019290
            /     YES                                                   019300
  
          :50     +EOS         60    # CHECK FOR END OF STATEMENT      #
            /     D103         99    # YES, MISSING PARENTHESIS        #
  
          :60     SKIP         YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :99     *DMLERROR 
                  YES                                                   019320
:VERSION:01         $(          D101      *DMLERROR   +SNS      YES 
          /         VERSPAR     +SNS       YES
          /         *COMMENT
        :10         $,          20
        :15         $ERR        *DMLERROR  D122       YES 
          /         ERRPAR      40
        :20         $)          30
          /         +EOS        +SNS       D104       60
          /         *VERSCALL 
          /         YES 
        :30         +EOS        50
          /         D103        60
        :40         SKIPERR     YES 
          /         *DMLERROR   YES 
        :50         SKIP        YES 
        :60         *DMLERROR   YES 
:DELETE:01        $(           +SNS  YES                                019330
            /     +NAME        +SNS  YES                                019340
            /     *SAVEREALM                                            019350
            /     *REALMORD    +SNS  YES                                019360
            /     *COMMENT                                              019370
          :10     $,           40    # CHECK FOR MORE PARAMETERS       #
  
          :20     $ERR               # ERROR PARAMETER                 #
                  *DMLERROR    D122  30 
            /     ERRPAR       30 
            /     10
  
          :30     SKIPERR      YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :40     $)           50 
            /     +EOS         +SNS  D104  99 
            /     *ACCESSREALM D118  99  # INTERNAL DML ERROR          #
            /     *PKEYORD     D118  99 
            /     *DELETECALL                                           019420
            /     YES                                                   019430
  
          :50     +EOS         60    # CHECK FOR END OF STATEMENT      #
            /     D103         99    # YES, MISSING PARENTHESIS        #
  
          :60     SKIP         YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :99     *DMLERROR 
            /     YES                                                   019450
:REWRITE:01       $(           +SNS  YES                                019460
            /     +NAME        +SNS  YES                                019470
            /     *SAVEREALM                                            001240
            /     *REALMORD    +SNS  YES                                019490
            /     *COMMENT                                              019500
          :10     $,           40    # CHECK FOR MORE PARAMETERS       #
  
          :20     $ERR               # ERROR PARAMETER                 #
                  *DMLERROR    D122  30 
            /     ERRPAR       30 
            /     10
  
          :30     SKIPERR      YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :40     $)           50 
            /     +EOS         +SNS  D104  99 
            /     *RECORDORD   D118  99  # INTERNAL DML ERROR          #
            /     *ACCESSREALM D118  99 
            /     *PKEYORD     D118  99 
            /     *REWRITECALL                                          019560
            /     YES                                                   019570
  
          :50     +EOS         60    # CHECK FOR END OF STATEMENT      #
            /     D103         99    # YES, MISSING PARENTHESIS        #
  
          :60     SKIP         YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :99     *DMLERROR 
            /     YES                                                   019590
NVOKE:01         $(           30
            /     $VERSION     *DMLERROR
                  D122         +SNS  # NO, INVALID PARAMETER           #
                  YES 
            /     $=           D110  # EQUAL SIGN MISSING              #
                  *DMLERROR    YES
            /      VERSPAR      +SNS        YES 
            /      $)           40
            /      +EOS      *DMLERROR      D104     YES
            /        50 
  
          :30      +EOS         *NOCOMMENT  +SNS     YES
          :50      *DATAPGMNAME 
            /      *FITCALL 
            /      *FITLISTCALL 
            /      *INVOKECALL
            /      YES
  
          :40      +EOS         60
            /      D103         *DMLERROR   YES 
  
          :60      SKIP         YES 
            /      *DMLERROR    YES 
:BEGINTR:01         $(          D101     *DMLERROR     +SNS  YES
        /           BEGINPAR    +SNS     YES
  
        :10         $,          20
        :15         $ERR        *DMLERROR   D122     YES
          /         ERRPAR      40
        :20         $)          30
          /         +EOS        +SNS     D104     60
          /         *BEGINCALL
          /         YES 
  
        :30         +EOS        50
          /         D103        60
  
        :40         SKIPERR     YES 
          /         *DMLERROR   YES 
  
        :50         SKIP        YES 
  
        :60         *DMLERROR   YES 
:COMMIT:01          $(          20
        :10         $ERR        *DMLERROR   D122     YES
          /         ERRPAR      40
          /         $)          30
  
        :20         +EOS        +SNS        D104     60 
          /         *COMMITCALL 
          /         YES 
  
        :30         +EOS        50
          /         D103        60
  
        :40         SKIPERR     YES 
          /         *DMLERROR   YES 
  
        :50         SKIP        YES 
  
        :60         *DMLERROR   YES 
  
:DROP:01           $(            20 
        :10         $ERR        *DMLERROR   D122     YES
          /         ERRPAR      40
          /         $)          30
  
        :20         +EOS        +SNS        D104     60 
          /         *DROPCALL 
          /         YES 
  
        :30         +EOS        50
          /         D103        60
  
        :40         SKIPERR     YES 
          /         *DMLERROR   YES 
  
        :50         SKIP        YES 
  
        :60         *DMLERROR   YES 
  
:ASSIGN:01         $(             D101           *DMLERROR    +SNS   YES
        /          RSTIDPAR       +SNS     YES
      :10          $,             20
      :15          $ERR           *DMLERROR      D122    YES
        /          ERRPAR         40
      :20          $)             30
        /          +EOS           +SNS           D104    60 
        /          *ASSIGNCALL
        /          YES
      :30          +EOS           50
        /          D103           60
      :40          SKIPERR       YES
        /          *DMLERROR      YES 
      :50          SKIP           YES 
      :60          *DMLERROR      YES 
  
:FIND:01            $(          *DMLERROR        +SNS      YES
      /             RSTIDPAR    +SNS        YES 
      /             $,          +SNS        50
      /             BEGINPAR    +SNS        YES 
  
    :10             $,          20
  
    :15             $ERR        *DMLERROR   D122     +SNS       YES 
      /             ERRPAR      40
  
    :20             $)          30
      /             +EOS        +SNS        D104     60 
      /             *FINDCALL 
      /             YES 
  
    :30             +EOS        50
      /             D103        60
  
    :40             SKIPERR     YES 
      /             *DMLERROR   YES 
  
    :50             SKIP        10
  
    :60             *DMLERROR   YES 
  
:TERMINATE:01     +EOS         +SNS  D104  10                           000840
            /     *TERMCALL                                             000860
            /     YES                                                   000870
          :10     *DMLERROR                                             000880
            /     YES                                                   000890
:LOCK:01           $(           +SNS        YES 
            /      +NAME        +SNS        YES 
            /      *SAVEREALM 
            /      *REALMORD    +SNS        YES 
            /      *COMMENT 
  
          :10      $,           30
  
          :15      $TYPE        20
            /      TYPPAR       50
            /      10 
  
          :20      $ERR         D122        +SNS     70 
            /      ERRPAR       50
           /       10 
  
          :30      $)           40
            /      +EOS         +SNS        D104     70 
            /      *LOCKCALL
            /      YES
  
          :40      +EOS         60
            /      D103         70
  
          :50      SKIPERR      YES 
            /      15 
  
          :60      SKIP         YES 
  
          :70      *DMLERROR    YES 
  
                  YES                                                   000470
:UNLOCK:01        $(           +SNS  YES                                000480
            /     +NAME        +SNS  YES                                000490
            /     *SAVEREALM                                            000500
            /     *REALMORD    +SNS  YES                                000510
            /     *COMMENT                                              000520
          :10     $,           40    # CHECK FOR MORE PARAMETERS       #
  
          :20     $ERR               # ERROR PARAMETER                 #
                  *DMLERROR    D122  30 
            /     ERRPAR       30 
            /     10
  
          :30     SKIPERR      YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :40     $)           50 
            /     +EOS         +SNS  D104  99 
            /     *UNLOCKCALL 
            /     YES 
  
          :50     +EOS         60    # CHECK FOR END OF STATEMENT      #
            /     D103         99    # YES, MISSING PARENTHESIS        #
  
          :60     SKIP         YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :99     *DMLERROR 
                  YES                                                   000580
:PRIVACY:01       $(           +SNS  YES                                000590
            /     +NAME        +SNS  YES                                000600
            /     *SAVEREALM                                            000610
            /     *REALMORD    +SNS  YES                                000620
            /     *COMMENT                                              000630
                               # CHECK FOR PARAMETERS                  #000640
          :10     $,           50 
  
          :20     $MODE        30    # MODE PARAMETER                  #
            /     MODEPAR      40 
            /     10
  
          :30     $PRIVACY           # PRIVACY PARAMETER               #
                  *DMLERROR    D122  40 
            /     PRIVPAR      40 
            /     10
  
          :40     SKIPERR      YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :50     $)           60 
            /     +EOS         +SNS  D104  99 
            /     *PRIVACYCALL
            /     YES 
  
          :60     +EOS         70    # CHECK FOR END OF STATEMENT      #
            /     D103         99    # YEES, MISSING PARENTHESIS       #
  
          :70     SKIP         YES   # SKIP TO COMMA, ), OR END OF STMT#
            /     20                 # COMMA FOUND, CHECK FOR NEXT PARM#
  
          :99     *DMLERROR 
                  YES                                                   000750
                                                                        000760
# ** PARAMETER ROUTINES **                                             #000770
# EACH PROCESSES ONE PARAMETER. IF NOT THAT PARAMETER, RETURNS NO.     #000780
# IF OPTION OK, CALLS SYMPL ROUTINE WHICH SAVES IT, RETURNS YES.       #000790
# ON ERROR, ATTEMPTS TO POSITION PAST OPTION, ISSUES DIAG, RETURNS NO. #000800
                                                                        000810
:MODEPAR:01       $=           D110  10 
            /     $IO  $I  $O  D109  10 
            /     *SAVEMODE    D123  10 
            /     *MODESTORE   D107  10 
            /     YES 
  
          :10     *DMLERROR 
            /     NO
:PRIVPAR:01       $=           D110  40 
            /     +CHARLIT     20 
            /     *SETLIT 
            /     30
          :20     +FNAME       D121  40 
          :30     *SAVEPRIV    D123  40 
            /     YES 
  
          :40     *DMLERROR 
            /     NO
                                     #   VERSION PARAMETER             #
:VERSPAR:01        +CHARLIT     20   # CHECK FOR LITERAL               #
            /      *SETLIT           # SET LITERAL FLAG                #
            /      30 
  
          :20      +FNAME       D133        40
  
          :30      *SAVERS      D134        40   # SAVE VERSION PARAM  #
            /      YES
  
          :40      *DMLERROR    NO
                                     #   BEGINTRAN PARAMETER           #
:BEGINPAR:01       +CHARLIT     20   # CHECK FOR LITERAL               #
            /      *SETLIT           # SET LITERAL FLAG                #
            /      30 
  
          :20      +FNAME       D131        40
  
          :30      *SAVBEGID    D132        40   # SAVE BEGINTRAN PARAM#
  
            /      YES
  
          :40      *DMLERROR    NO
  
                                     #   TYPE  PARAMETER               #
:TYPPAR:01         $=           D110        40
            /      +CHARLIT     20   # CHECK FOR LITERAL               #
            /      *SETLIT           # SAVE LITERAL FLAG               #
            /      30 
  
          :20      +FNAME       D135        40
  
          :30      *SAVTYP      D136        40   # SAVE TYPE PARAMETER #
            /      YES
  
          :40      *DMLERROR    NO
                                     #   RESTART IDENTIFIER            #
:RSTIDPAR:01       +FNAME       D137        *DMLERROR     NO
            /      *SAVRID           # SAVE RESTART IDENTIFIER         #
            /      YES
  
                                     #----------ERR PARAMETER----------#
:ERRPAR:01        $=           D110  10 
            /     +INT         D128  10 
            /     *ERRRTRN     10    # STORE THE ERR RETURN LABEL      #
            /     YES                # RETURN                          #
  
          :10     *DMLERROR          # *DML ERROR* MESSAGE             #
            /     NO                 # RETURN                          #
  
                                     #----------END PARAMETER----------#
:ENDPAR:01        $=           D110  10 
            /     +INT         D128  10 
            /     *ENDRTRN     10    # STORE THE END RETURN LABEL      #
            /     YES                # RETURN                          #
  
          :10     *DMLERROR          # *DML ERROR* MESSAGE             #
            /     NO                 # RETURN                          #
  
                                     #----------KEY PARAMETER----------#
:KEYPAR:01        $=           05    # CHECK FOR EQUAL SIGN            #
            /     *KEYOPR            # YES, CONVERT AND STORE OPERATOR #
            /     06
  
          :05     $.                 # CHECK FOR RELATIONAL OPERATOR   #
                  D114         10    # NO, INVALID RELATIONAL OPERATOR #
            /     $EQ $GT $GE 
                  D114         10 
            /     *KEYOPR            # STORE THE KEY OPERATOR          #
            /     $.           D117  # PERIOD MISSING                  #
                  10
  
          :06     +FNAME             # CHECK FOR FORTRAN ITEM          #
                  +NAME              # CHECK FOR VALID NAME            #
                  D115         10    # INVALID ITEM NAME               #
            /     *READKEY           # PROCESS KEY ITEM                #
                  D116         10    # INVALID KEY                     #
            /     YES                # RETURN                          #
  
          :10     *DMLERROR          # *DML ERROR* MESSAGE             #
            /     NO                 # RETURN                          #
# ** SKIP ROUTINES **                                                  #
# THESE ROUTINES SKIP TO A COMMA, RIGHT PARENTHESIS, OR END OF STMT,   #
# WHICHEVER COMES FIRST. A COMMA RETURNS YES, A PARENTHESIS OR EOS     #
# RETURNS NO. SKIPERR IS CALLED WHEN AN ERROR IS FOUND WHILE PROCESSING#
# A PARAMETER. SKIP IS CALLED AFTER PROCESSING A PARAMETER TO SKIP OVER#
# ANY EXTRANEOUS DATA WHICH MAY OCCUR.                                 #
:SKIP:01          $,           05    # CHECK FOR COMMA                 #
            /     YES                # COMMA FOUND, RETURN YES         #
  
          :05     $)           07    # CHECK FOR PARENTHESIS           #
            /     D112
            /     +EOS         +SNS  D104 
            /     10
  
          :07     +EOS         09    # CHECK FOR END OF STATEMENT      #
            /     D112         D103  10 
  
          :09     +SNW         01    # SKIP TO NEXT WORD               #
  
          :10     *DMLERROR 
            /     NO
:SKIPERR:01       $,           05    # CHECK FOR COMMA                 #
            /     YES                # COMMA FOUND, RETURN YES         #
  
          :05     $)           07    # CHECK FOR PARENTHESIS           #
            /     +EOS         +SNS  D104  10 
            /     NO
  
          :07     +EOS         09    # CHECK FOR END OF STATEMENT      #
            /     D103         10 
  
          :09     +SNW         01    # SKIP TO NEXT WORD               #
  
          :10     *DMLERROR 
            /     NO
END                                                                     008100
