NAME:
  getvalue
 PURPOSE:   (one line only)
  Retrieve a value from a configuration information structure
 DESCRIPTION:
 CATEGORY:
  Miscellaneous
 CALLING SEQUENCE:
  getvalue,info,section,name,value
 INPUTS:
  info - anonymous structure returned from loadini.pro
  section - value of section to extract value from.  If set to an empty
              string then the value is taken regardless of section
  name - value of name to extract value from.  If set to an empty string
              then the value is taken regardless of name
 OPTIONAL INPUT PARAMETERS:
 KEYWORD INPUT PARAMETERS:
  TYPE - Integer code for variable type to return.  Default=7.  0 is ignored.
  DEFAULT - Value to return if the key isn't found.  In this case, TYPE is
              ignored and what you provide is returned as is.  If this is
              not provided and the section is not 'global', then a value
              from the [global] section is used for the default.
  ARRAY - Flag, if set will lead to parsing the value, breaking the string
              by spaces, and returning a vector of values that matches the
              output type.  This keyword only works if both section and
              name are provided and is intended for a single match.
 OUTPUTS:
  value - string scalar or vector for values matching section and name
            if nothing matches the output will be a scalar empty string
            Note that type conversion is not applied if nothing is found.
 KEYWORD OUTPUT PARAMETERS:
 COMMON BLOCKS:
 SIDE EFFECTS:
 RESTRICTIONS:
 PROCEDURE:
 MODIFICATION HISTORY:
  Written by Marc W. Buie, Southwest Research Institute, 2020/06/22
  2020/07/01, MWB, added DEFAULT keyword
  2020/09/24, MWB, added inheritance from global section if default not given
  2023/10/04, MWB, added ARRAY keyword