Previous: prsbrk Up: ../plot79_p.html Next: prsckt


PRSCK

       LOGICAL FUNCTION  PRSCK (STATUS,KEYSTR,LENSTR,MAXKEY,PKEY,
      X     LKEY,NKEY)
 C$    (Parse - Check Keys)
 C$    Given a list of keywords (ordered alphabetically  according
 C$    to the ASCII collating sequence) packed in KEYSTR(*) in the
 C$    form
 C$
 C$    *fKEY1*fKEY2*fKEY3*...*fKEYN
 C$
 C$    where the first character  is the key separator  character,
 C$    return the  locations, lengths,  and number  of keys.   The
 C$    function value and STATUS code  are .TRUE. on success,  and
 C$    .FALSE.  on failure.   The key separator  character may  be
 C$    any character  which is  not a  keyword character.   Letter
 C$    case is ignored in the comparisons.
 C$
 C$    The character following each  key separator is an  OPTIONAL
 C$    flag character, always a  digit in the  range 0..7, with  0
 C$    being the standard choice, and  the one assumed by  default
 C$    if the character following the key separator is not one  of
 C$    the in-range digits (and  therefore is the first  character
 C$    of the key).  It  encodes 3 flag bits,  and is obtained  by
 C$    summing the following option values:
 C$
 C$    1 - Abbreviation: Accept a match  with this  keyword as  an
 C$                      abbreviation for another  keyword in  the
 C$                      table, even  if the  match is  ambiguous.
 C$                      For  example,  a  table  in  a   graphics
 C$                      application might  contain  the  keywords
 C$                      LINE,   LINE-WIDTH,    LINE-STYLE,    and
 C$                      LINE-INTENSITY.  LINE would be  ambiguous
 C$                      unless it were marked as an abbreviation.
 C$                      Similarly, L, LI, and  LIN could also  be
 C$                      present with the abbreviation flag set.
 C$    2 - No Recognize: Do not recognize this keyword  even if it
 C$                      would otherwise be  an acceptable  match.
 C$                      For example,  if DELETE  were a  keyword,
 C$                      and the only  one beginning  with D,  one
 C$                      might wish to include  keywords D and  DE
 C$                      with the No Recognize flag set, in  order
 C$                      to disallow matches with them, forcing at
 C$                      least 3 letters to be typed to  recognize
 C$                      DELETE.  Any keyword  with this flag  set
 C$                      is suppressed  in a  typeout of  possible
 C$                      matches by PRSSHO.
 C$    4 - Invisible:    Allow  matches with this keyword,  but do
 C$                      not display it in  a typeout of  possible
 C$                      matches by PRSSHO.   For example, if  the
 C$                      keyword PRINT  is  preferred  over  LIST,
 C$                      both could be in the keyword table and be
 C$                      recognized,  but  LIST  could  have   the
 C$                      Invisible  flag  set.   This  lets  newer
 C$                      program    versions    retain     command
 C$                      compatibility  with   older   ones,   yet
 C$                      gradually wean  users  away from  use  of
 C$                      obsolete command words.
 C$
 C$    The input arguments are:
 C$
 C$    KEYSTR(*)...........Packed keyword string.
 C$    LENSTR..............Number of characters in KEYSTR(*).
 C$    MAXKEY..............Dimension limit of PKEY(*) and LKEY(*).
 C$
 C$    The output arguments are:
 C$
 C$    STATUS.............. .TRUE. - The   keys   are    correctly
 C$                                  ordered  in  KEYSTR(*).   The
 C$                                  alphabetical  order  MUST  be
 C$                                  correct for  a binary  search
 C$                                  by  FUNCTION  PRSIK  to  work
 C$                                  successfully.
 C$                        .FALSE. - The keys are out of order, or
 C$                                  NKEY exceeds MAXKEY.
 C$    PKEY(*).............Array of pointers  to the beginning  of
 C$                        the keys in KEYSTR(*).
 C$    LKEY(*).............Array  of  lengths   of  the  keys   in
 C$                        KEYSTR(*).
 C$    NKEY................Number of keys found in  KEYSTR(*), and
 C$                        number  of  entries   in  PKEY(*)   and
 C$                        LKEY(*).  If NKEY  > MAXKEY on  return,
 C$                        there was insufficient space in PKEY(*)
 C$                        and LKEY(*), but the array bounds  have
 C$                        not been exceeded.
 C$
 C$    See the abstract of PRSIK for applications of this  routine
 C$    and a table of the ASCII character set.  PRSSHO can be used
 C$    to display all or part of the list.
 C$    (25-APR-84)