INCLUDE (SCANLIB.PARAMS)
C
C     SCANLIB.PARAMS -- PARAMETERS FOR COMMAND SCANNER LIBRARY
C
C     MODIFIED 1981-JUL-21 - JWB - INCREASE NAME TABLE SIZE FOR OPS
C
      IMPLICIT INTEGER (A-Z)
C
C     SIZES AND DIMENSIONS --
C
C     CMTBSZ - COMMAND TABLE SIZE
C     KWTBSZ - KEYWORD ARGUMENT TABLE SIZE
C     NMTBSZ - NAME TABLE SIZE
C     NAMLEN - MAXIMUM NUMBER OF CHARACTERS IN A COMMAND,KEYWORD,OR NAME
C     TOKNSZ - MAXIMUM NUMBER OF CHARACTERS IN A TOKEN, INCLUDING A
C     .        STRING AFTER PAIRS OF QUOTES ARE REDUCED TO SINGLE QUOTES
C     PNTBSZ - PUNCTUATION TABLE SIZE
C     LSTLEN - MAXIMUM NUMBER OF ENTRIES IN A LIST
C     NILSTS - NUMBER OF INTEGER LISTS
C     NNLSTS - NUMBER OF NAME    LISTS
C     NRLSTS - NUMBER OF REAL    LISTS
C     NSLSTS - NUMBER OF STRING  LISTS
C
      PARAMETER (CMTBSZ =  50)
      PARAMETER (KWTBSZ = 100)
      PARAMETER (NMTBSZ = 200)
      PARAMETER (NAMLEN =   6)
      PARAMETER (TOKNSZ =  72)
      PARAMETER (PNTBSZ =  10)
      PARAMETER (LSTLEN =  12)
      PARAMETER (NILSTS =  25)
      PARAMETER (NNLSTS =  25)
      PARAMETER (NRLSTS =  25)
      PARAMETER (NSLSTS =  25)
C
C     PUNCTUATION TYPE CODES --
C
C     NOISE  - CHARACTERS WHICH ARE IGNORED (TYPICALLY BLANK)
C     COMENT - COMMENT DELIMITER            (TYPICALLY '@' OR '!')
C     NOPUNC - CHARACTERS WHICH HAVE NO SPECIAL SIGNIFICANCE AS
C     .        PUNCTUATION, EXCEPT POSSIBLY IN NUMERIC LITERALS
C     LSTSEP - LIST SEPARATORS              (TYPICALLY COMMA)
C     KEYSEP - KEYWORD (COMMAND OR ARG) TERMINATORS (TYPICALLY '=')
C     ARGSEP - ARGUMENT LIST TERMINATORS    (TYPICALLY '/')
C     CMTERM - COMMAND TERMINATORS          (TYPICALLY ';')
C     CONTIN - LINE CONTINUATION INDICATOR  (TYPICALLY '&')
C
      PARAMETER (NOISE  = -2)
      PARAMETER (COMENT = -1)
      PARAMETER (NOPUNC =  0)
      PARAMETER (LSTSEP =  1)
      PARAMETER (KEYSEP =  2)
      PARAMETER (ARGSEP =  3)
      PARAMETER (CMTERM =  4)
      PARAMETER (CONTIN =  5)
C
C     LIST TYPE CODES --
C
      PARAMETER (LSTYPI = 1)
      PARAMETER (LSTYPR = 2)
      PARAMETER (LSTYPN = 3)
      PARAMETER (LSTYPS = 4)
C
END INCLUDE
INCLUDE (SCANLIB.CMLIST)
C
C     MOD 1982-AUG-04 -- JWB -- SEPARATE CHAR AND NON-CHAR COMMONS
C
C     SCANLIB.CMLIST -- LISTS TO BE SET UP BY COMMAND SCANNER LIBRARY
C     .                 ROUTINES WHEN SCANNING A SET OF COMMANDS
C
C     CHARACTER LISTS --  (SEE COMMENT ON CHARACTER REPRESENTATION
C     .                    IN CMTABL COMMENTS)
C
C     SLIST  IS A LIST OF LISTS OF CHARACTER STRING VALUES
C
C     INTEGER LISTS --
C
C     ILIST  IS A LIST OF LISTS OF INTEGER VALUES
C     NLIST  IS A LIST OF LISTS OF NAME INDEXES
C     CMDFND IS A LIST INDICATING WHETHER A COMMAND HAS BEEN
C     .                ENCOUNTERED IN THE INPUT COMMAND SET
C     KWDFND IS A LIST INDICATING WHETHER A KEYWORD ARGUMENT HAS BEEN
C     .                ENCOUNTERED IN THE INPUT COMMAND SET
C     STLENG IS A LIST OF LENGTHS OF STRINGS IN SLIST
C
C     REAL LISTS --
C
C     RLIST  IS A LIST OF LISTS OF REAL VALUES
C
      CHARACTER*1 SLIST(TOKNSZ,LSTLEN,NSLSTS)
      INTEGER STLENG(LSTLEN,NSLSTS)
      INTEGER ILIST(LSTLEN,NILSTS)
      INTEGER NLIST(LSTLEN,NNLSTS)
      REAL    RLIST(LSTLEN,NRLSTS)
      INTEGER CMDFND(CMTBSZ)
      INTEGER KWDFND(KWTBSZ)
C
      COMMON /CMLIST/ CMDFND, KWDFND, ILIST, NLIST, RLIST, STLENG
      COMMON /CMLISC/ SLIST
C
C     *** END OF CMLIST ***
END INCLUDE
INCLUDE (SCANLIB.CMTABL)
C
C     MOD 1981-JUL-21 -- JWB -- ADD NAME TABLE RANGE LIMITS
C     MOD 1982-AUG-04 -- JWB -- SEPARATE CHAR AND NON-CHAR COMMONS
C     .                      -- ADD CMUNIT FOR COMMAND LINE INPUT
C     MOD 1982-OCT-07 -- JWB -- ADD NOECHO SWITCH FOR CMREAD
C
C     SCANLIB.CMTABL - TABLES FOR COMMAND SCANNER LIBRARY
C
C     THESE TABLES ARE GIVEN VALUES BY THE IMPLEMENTOR OF AN
C     APPLICATION, USUALLY BY USE OF A BLOCK DATA SUBPROGRAM.
C     THESE TABLES ARE INTENDED FOR READ-ONLY ACCESS BY THE
C     SCANLIB ROUTINES.
C
C     CHARACTER TABLES --
C
C     ALL CHARACTER ITEMS ARE ARRAYS OF CHARACTER*1.
C
C     CMDTBL IS THE TABLE OF COMMANDS
C     KWDTBL IS THE TABLE OF ARGUMENT KEYWORDS
C     NAMTBL IS THE TABLE OF NAMES WHICH ARE VALID AS LIST ITEMS
C     PUNTBL IS THE TABLE OF PUNCTUATION CHARACTERS
C
      CHARACTER*1 CMDTBL(NAMLEN,CMTBSZ)
      CHARACTER*1 KWDTBL(NAMLEN,KWTBSZ)
      CHARACTER*1 NAMTBL(NAMLEN,NMTBSZ)
      CHARACTER*1 PUNTBL(PNTBSZ)
C
C     INTEGER TABLES --
C
C     CARGTP IS A TABLE OF LIST TYPE CODES FOR THE INITIAL
C     .         (NONKEYWORD) LIST OF A COMMAND
C     CNARGS IS A TABLE OF THE MAXIMUM NUMBER OF LIST ITEMS ALLOWED
C     .         IN THE INITIAL LIST OF A COMMAND
C     CLSTDX IS A TABLE OF INDEXES FOR THE RESULT LIST OF THE
C     .         INITIAL LIST OF A COMMAND
C     KARGTP IS A TABLE OF LIST TYPE CODES FOR THE LIST OF
C     .         A KEYWORD ARGUMENT
C     KNARGS IS A TABLE OF THE MAXIMUM NUMBER OF LIST ITEMS ALLOWED
C     .         IN THE LIST OF A KEYWORD ARGUMENT
C     KLSTDX IS A TABLE OF INDEXES FOR THE RESULT LIST OF A
C     .         KEYWORD ARGUMENT
C     KWSTRT IS A TABLE OF STARTING INDEXES INTO THE KEYWORD TABLE
C     KWSTOP IS A TABLE OF ENDING   INDEXES INTO THE KEYWORD TABLE
C     .      FOR COMMAND INDEX I, THE ALLOWED KEYWORDS ARE IN
C     .      KWDTBL(*,KWSTRT(I)) THROUGH KWDTBL(*,KWSTOP(I))
C     NMSTRT IS A TABLE OF STARTING INDEXES INTO THE NAME TABLE
C     NMSTOP IS A TABLE OF ENDING   INDEXES INTO THE NAME TABLE
C     .      FOR KEYWORD INDEX K, THE ALLOWED NAMES ARE IN
C     .      NAMTBL(*,NMSTRT(K)) THROUGH NAMTBL(*,NMSTOP(K))
C     .   NOTE THAT THERE IS NO WAY TO DISTINGUISH A SET OF NAMES
C     .   ALLOWED WITH A KEYWORD ON ONE COMMAND FROM A DIFFERENT SET
C     .   ALLOWED WITH THE SAME KEYWORD ON A DIFFERENT COMMAND, UNLESS
C     .   THAT KEYWORD APPEARS TWICE IN THE KEYWORD TABLE.
C     PNCODE IS A TABLE OF PUNCTUATION CODES CORRESPONDING TO PUNTBL
C
      INTEGER CARGTP(CMTBSZ), KARGTP(KWTBSZ)
      INTEGER CNARGS(CMTBSZ), KNARGS(KWTBSZ)
      INTEGER CLSTDX(CMTBSZ), KLSTDX(KWTBSZ)
      INTEGER KWSTRT(CMTBSZ)
      INTEGER KWSTOP(CMTBSZ)
      INTEGER NMSTRT(KWTBSZ)
      INTEGER NMSTOP(KWTBSZ)
      INTEGER                 PNCODE(PNTBSZ)
C
C     INTEGER CONSTANTS --
C
C     EOL    IS THE POSITION INDEX OF THE END-OF-LINE.  THIS
C     .         MUST BE ONE GREATER THAN THE LAST ALLOWED
C     .         INPUT CHARACTER POSITION, AND MUST CONTAIN <CMTERM>.
C     CMUNIT IS THE FORTRAN UNIT NUMBER FOR COMMAND INPUT FOR CMREAD
C     ERUNIT IS THE FORTRAN UNIT NUMBER FOR DIAGNOSTIC MESSAGES
C     NOECHO IS A SWITCH TO SUPPRESS COMMAND ECHOING FOR CMREAD
C     .         0=ECHO ENABLED, 1=ECHO DISABLED
C
C     CHARACTER CONSTANTS --
C
C     QUOTE  IS THE STRING DELIMITER (SHOULD BE APOSTROPHE
C     .         OR QUOTATION MARK)
C
      INTEGER EOL
      INTEGER ERUNIT, CMUNIT
      CHARACTER*1 QUOTE
C
      COMMON /CMTABL/ CARGTP, CNARGS, CLSTDX
     *,               KARGTP, KNARGS, KLSTDX
     *,               KWSTRT, KWSTOP, NMSTRT, NMSTOP, PNCODE
     *,               EOL,    ERUNIT, CMUNIT, NOECHO
      COMMON /CMTABC/ CMDTBL, KWDTBL, NAMTBL, PUNTBL, QUOTE
C
C     *** END OF CMTABL ***
END INCLUDE
INCLUDE (SCANLIB.CMTABL.EQUIVS)
C
C     THIS INCLUDE SEGMENT IS USED TO PROVIDE EQUIVALENCES OF
C     CHAR*(NAMLEN) VARIABLES FOR THE CHAR*1(NAMLEN) CHAR ARRAYS
C     FOR CONVENIENCE OF SETTING UP CONSTANTS IN BLOCK DATA.
C
      CHARACTER*(NAMLEN) CMDTBE(CMTBSZ)
      CHARACTER*(NAMLEN) KWDTBE(KWTBSZ)
      CHARACTER*(NAMLEN) NAMTBE(NMTBSZ)
      EQUIVALENCE (CMDTBL(1,1),CMDTBE(1))
      EQUIVALENCE (KWDTBL(1,1),KWDTBE(1))
      EQUIVALENCE (NAMTBL(1,1),NAMTBE(1))
END INCLUDE
END FILE
