ENVGET()
is the Fortran-90-generic (I/O API-3.2 or later only) that calls the following (or various other routines), as determined by the argument-list:
ENVDBLE()
is a Fortran wrapper calling the Cenvdblec()
BENVDBLE()
also hasMINVALO, MAXVAL
arguments (I/O API-3.2 or later only)
DOUBLE PRECISION FUNCTION ENVDBLE( LNAME, DESCRIP, DEFAULT, STATUS ) CHARACTER*(*), INTENT(IN ) :: LNAME ! logical name to evaluate CHARACTER*(*), INTENT(IN ) :: DESC ! description of the value REAL*8 , INTENT(IN ) :: DEFAULT ! default value (if LNAME not set, or empty) INTEGER , INTENT( OUT) :: STAT ! for error/default-case detection DOUBLE PRECISION FUNCTION BENVDBLE( LNAME, DESCRIP, MINVAL, MAXVAL, DEFAULT, STATUS ) CHARACTER*(*), INTENT(IN ) :: LNAME ! logical name to evaluate CHARACTER*(*), INTENT(IN ) :: DESC ! description of the value REAL*8 , INTENT(IN ) :: MINVAL REAL*8 , INTENT(IN ) :: MAXVAL REAL*8 , INTENT(IN ) :: DEFAULT ! default value (if LNAME not set, or empty) INTEGER , INTENT( OUT) :: STAT ! for error/default-case detection
double envdblec( const char * lname , const char * description , double defaultval , int * status )
LNAME
in the
environment,
and interpret it as double precision. Returns the
DEFAULT
if the
logical name is not defined, is defined but has an empty value,
or has an improper value. Writes a message to the log indicating
the value returned -- and if the value was improper, writes a
warning notice. STAT
takes the following values:
DEFAULT
DEFAULT
)
DEFAULT
)
See also
ENVGET (generic environment-value routine, I/O API-3.2 or later),
ENVLIST (generic environment-list routine, I/O API-3.1 or later),
ENVINT,
ENVREAL,
ENVSTR,
ENVYN,
NAMEVAL; and
SETENVVAR() for setting environment variables from within a program
.
#include "iodecl3.h"
if called from C.
LNAME and DESCRIP have length at most 512 for I/O API-3.0 or earlier, 65535 for I/O API-3.1. (NOTE: POSIX says that environment variables with lengths at least 512 must be supported.)
USE M3UTILIO
Example: get a program-control parameter for logical name 'FOO' which defaults to 17.0D0, generating appropriate log messages, etc.:
... setenv FOO 23.9876543212345 ... /mydirectory/myprogram ...
... INTEGER FOO INTEGER STATUS ... FOO = ENVDBLE( 'FOO', & 'Some control parameter or other, called FOO', & 17.0D0 , & STATUS ) IF ( STATUS .GT. 0 ) THEN ... bad value for FOO; do something. END IF ...
#include "iodecl3.h" ... int status ; double value ; ... value = envdblec( "FOO", "Here is where I put a description", 17.0 , & status ) ) if ( status > 0 ) { ... stuff for bad (non-integer) value of environment variable FOO } else if ( status == -1 ) { ... stuff for empty-but-defined FOO } else if ( status == -2 ) { ... stuff for not-defined-at-all FOO } ... use value...
To: Models-3/EDSS I/O API: The Help Pages