Index of Functions: A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 
Index Page
kxtrct

Table of contents
Procedure
Abstract
Required_Reading
Keywords
Declarations
Brief_I/O
Detailed_Input
Detailed_Output
Parameters
Exceptions
Files
Particulars
Examples
Restrictions
Literature_References
Author_and_Institution
Version

Procedure

     KXTRCT ( Extract a substring starting with a keyword )

     SUBROUTINE KXTRCT ( KEYWD,  TERMS, NTERMS,
    .                    WORDSQ, FOUND, SUBSTR  )

Abstract

     Locate a keyword in a string and extract the substring from
     the beginning of the first word following the keyword to the
     beginning of the first subsequent recognized terminator of a list.

Required_Reading

     None.

Keywords

     PARSING
     PARSING
     SEARCH

Declarations

     IMPLICIT NONE

     CHARACTER*(*)    KEYWD
     CHARACTER*(*)    TERMS(*)
     INTEGER          NTERMS
     CHARACTER*(*)    WORDSQ
     LOGICAL          FOUND
     CHARACTER*(*)    SUBSTR

Brief_I/O

     VARIABLE  I/O  DESCRIPTION
     --------  ---  --------------------------------------------------
     KEYWD      I   Word that marks the beginning of text of interest.
     TERMS      I   Set of words, any of which marks the end of text.
     NTERMS     I   Number of TERMS.
     WORDSQ    I-O  String containing a sequence of words.
     FOUND      O   .TRUE. if the keyword is found in the string.
     SUBSTR     O   String from end of KEYWD to beginning of first
                    TERMS item found.

Detailed_Input

     KEYWD    is a word used to mark the start of text of interest.

     TERMS    is a set of words, any one of which may signal the end of
              text of interest.

     NTERMS   is the number of TERMS.

     WORDSQ   is a character string made up of words, that may contain
              the keyword in KEYWD.

Detailed_Output

     WORDSQ   is the input string stripped of all words from the
              beginning of the keyword KEYWD to the end of the last
              word preceding one of the words in TERMS (or the end of
              the string if none of the TERMS follows KEYWD in the
              string).

     FOUND    is .TRUE. if KEYWD is present in the input WORDSQ.

     SUBSTR   is the substring that begins with the first word
              following KEYWD up to the beginning of any of the words
              in TERM or the end of the string.

Parameters

     None.

Exceptions

     Error free.

Files

     None.

Particulars

     Definitions:

     A WORD        is a set of consecutive non-blank characters
                   delimited by blanks or either end of the string
                   that contains them.

     Given a string and a keyword this routine locates the first
     occurrence of the keyword in the string and returns the
     substring between the end of the keyword and the first occurrence
     of any of the words in a list of terminating words. If none
     of the terminating words follows the keyword in the string,
     the routine returns all of the string following the keyword.

     If the next word following the keyword is a terminating word,
     the substring returned will be a blank.

     If the keyword can not be located in the string, the variable
     FOUND will be returned as .FALSE. and the input string will be
     unchanged. The substring will be returned as a blank.

     In all other cases, the part of the input string from the
     beginning of the keyword to the start of the first terminating
     word will be removed. If no terminating word follows the keyword
     the portion of the string from the keyword to the last non-blank
     character of the string will be removed.

Examples

     Example 1.
     ----------
       Input:  WORDSQ  'FROM 1 October 1984 12:00:00 TO 1 January 1987'
               KEYWD   'TO'
               TERMS   'FROM'
                       'TO'
                       'BEGINNING'
                       'ENDING'

       Output: WORDSQ  'FROM 1 October 1984 12:00:00 '
               FOUND   .TRUE.
               SUBSTR  '1 January 1987'


     Example 2.
     ----------
       Input:  WORDSQ  'FROM 1 October 1984 12:00:00 TO 1 January 1987'
               KEYWD   'FROM'
               TERMS   'FROM'
                       'TO'
                       'BEGINNING'
                       'ENDING'

       Output: WORDSQ  ' TO 1 January 1987'
               FOUND   .TRUE.
               SUBSTR  '1 October 1984 12:00:00'


     Example 3.
     ----------
       Input:  WORDSQ  'ADDRESS: 4800 OAK GROVE DRIVE PHONE: 354-4321 '
               KEYWD   'ADDRESS:'
               TERMS   'ADDRESS:'
                       'PHONE:'
                       'NAME:'

       Output: WORDSQ  ' PHONE: 354-4321 '
               FOUND   .TRUE.
               SUBSTR  '4800 OAK GROVE DRIVE'


     Example 4.
     ----------
       Input:  WORDSQ  'ADDRESS: 4800 OAK GROVE DRIVE PHONE: 354-4321 '
               KEYWD   'NAME:'
               TERMS   'ADDRESS:'
                       'PHONE:'
                       'NAME:'

       Output: WORDSQ  'ADDRESS: 4800 OAK GROVE DRIVE PHONE: 354-4321 '
               FOUND   .FALSE.
               SUBSTR  ' '

Restrictions

     1)  It is the user's responsibility to make sure there is adequate
         room in SUBSTR to contain the substring.

     2)  SUBSTR cannot overwrite WORDSQ.

Literature_References

     None.

Author_and_Institution

     J. Diaz del Rio    (ODC Space)
     H.A. Neilan        (JPL)
     W.L. Taber         (JPL)

Version

    SPICELIB Version 1.1.0, 17-JUN-2021 (JDR)

        Added IMPLICIT NONE statement. Changed the input argument
        STRING to WORDSQ for consistency with other routines.

        Edited the header to comply with NAIF standard.

    SPICELIB Version 1.0.1, 10-MAR-1992 (WLT)

        Comment section for permuted index source lines was added
        following the header.

    SPICELIB Version 1.0.0, 31-JAN-1990 (WLT) (HAN)
Fri Dec 31 18:36:30 2021