7.129. CKSNUM

CKSNUM    CKSNUM    CKSNUM    CKSNUM    CKSNUM    CKSNUM    CKSNUM    
          **********************************************
                    **************************
                              ******

SUBROUTINE CKSNUM (LINE, NEXP, LOUT, KRAY, NN, KNUM, NVAL,
                   RVAL, KERR)
Search a character string, LINE, for (1) a character substring which
may also appear in an array of character substrings KRAY, and
(2) some number of character substrings representing numbers.
In the case of (1), if the character substring appears in KRAY,
KNUM is its index position.
In the case of (2), the character substrings are converted to
NVAL real numbers and stored in RVAL, until NEXP are converted.

This allows format-free input of combined alpha-numeric data.
For example, the subroutine might be called to find a Chemkin
species index and convert the other substrings to real values:

   input:  LINE    = "N2  1.2"
           NEXP    = 1, the number of values expected
           LOUT    = 6, a logical unit number on which to write
                     diagnostic messages.
           KRAY(*) = "H2" "O2" "N2" "H" "O" "N" "OH" "H2O" "NO"
           NN      = 9, the number of entries in KRAY(*)
   output: KNUM    = 3, the index number of the substring in
                     KRAY(*) which corresponds to the first
                     substring in LINE
           NVAL    = 1, the number of values found in LINE
                     following the first substring
           RVAL(*) = 1.200E+00, the substring converted to a number
           KERR    = .FALSE.
INPUT
LINE      - Character string; length depends on calling routine.
NEXP      - Integer scalar, number of values to be found in LINE.
            If NEXP < 0, then IABS(NEXP) values are expected, but
            it is not an error condition if less values are found.
LOUT      - Integer scalar, formatted output file unit.
KRAY(*)   - Character string array.
NN        - Integer scalar, total number of character strings
            in KRAY.

OUTPUT
KNUM      - Integer scalar, index of character string in KRAY
            which corresponds to the first substring in LINE.
NVAL      - Integer scalar, count of real values found in LINE.
RVAL(*)   - Real array, real values found in LINE; dimension at least
            NEXP.
KERR      - Logical, syntax or dimensioning error flag;
            corresponding string not found, or total of
            values found is not the number of values expected,
            will result in KERR = .TRUE.