fdds_scank - retrieve definition information from dictionary


SYNOPSIS

#include <fdds.h> (fixed-format sources)
#include <f90dds.h> (free-format sources)

integer function fdds_scank(alias, keys)

character*(*) alias
character*(*) keys

DESCRIPTION

fdds_scank retrieves a definition information from a dictionary. The "scan" dictionary(s) must have been previously selected by fdds_dict, or related function. The name of the definition is specified by alias.

A new definition may be selected for retrieval. Multiple names, delimited by white space, may be specified by alias. If a name is specified, the "scan" dictionaries are searched. Dictionaries are scanned from bottom-to-top and right-to-left. The newest definition that matches any alias is selected. The function returns EOF, if no match is found.

The current "scan" definition is accessed, if a blank alias is specified. The value is processed, starting from the current position. The function returns EOF, if a "scan" definition is not already selected.

fdds_scank is used to count definition tokens and search for keywords. The value is parsed into tokens, similar to fdds_scant. The remaining tokens are simply counted, if a blank keys is specified. The function returns -1 if the alias is not found at all, 0 if the alias is found but there are no tokens, or the total number of tokens found. When tokens are counted, the current position in the value is not changed. A search is requested by specifying a non-blank keys. The keys argument is parsed into tokens, similar to the value. The search stops at the first value token that matches any keys token. If a match is found, its count is returned and the current position in the value is advanced to the token. If a match is not found, the function returns zero and the current position is not changed.

Dictionaries may contain alias definitions. They define alternate names for "older" definitions. alias definitions are denoted by a special prefix, "alias:defn_name" or "$defn_name". The value of an alias definition is a list of alternate names.

EXAMPLES

      integer            :: rank, dimensions, i, ier
      real, dimension(3) :: size3d
      
      ! retrieve number of axes
      rank = fdds_scank('axis',' ')
      
      ! handle 3D input
      dimensions = fdds_scank('modelbounds', '')
      if (dimensions > -1) then
          if (dimensions == 3) then
              ier = fdds_scanf('modelbounds', '')
              do i = 1, dimensions
                  ier = fdds_scanf('', '%f\0',size3d(i))
              enddo
          else
              ier = fdds_prterr('You did not specify the correct size3d dimensions.\n\0')
          endif
      else
          size3d(1) = -1
          size3d(2) = -1
          size3d(3) = -1
      endif
    

SEE ALSO

fdds_dict Select DDS dictionary and mode
fdds_scanf Retrieve a definition
fdds_scant Retrieve a definition
fdds_scantn Retrieve a definition
fdds_scanv Retrieve a definition
    

AUTHOR

R. L. Selzler, EPTG (May, 1994)