SUBROUTINE NAMEVAL( LNAME, EQNAME ) CHARACTER*(*), INTENT(IN ) :: LNAME ! logical name to evaluate CHARACTER*(*), INTENT( OUT) :: EQNAME ! value of LNAME from the environment
LNAMEin the environment and return it in
EQNAME. This is not only used within the I/O API internally (to deal with logical names of files) but is also useful for retrieving the values of environment-variable flags used to control the mode of operation of programs: since you can call NAMEVAL() from anywhere, you don't have to make special provisions to pass the flags from the program-initialization module to the computational modules where they are actually used; the computational modules can evalutate the flags directly.
NAMEVAL() does not generate log-messages,
ENV*() routines below.
EQNAME=LNAME in case of failure.
Case-sensitive for UNIX (but insensitive for VMS, where environment variable names themselves are case-insensitive).
See also specialized routines for getting
INTEGER, REAL, CHARACTER-STRING, or
values from the environment, respectively, together with
error-status and log-reporting:
ENVGET() (generic environment-value routine, I/O API-3.2 or later),
ENVLIST() (generic environment-list routine, I/O API-3.1 or later)
INTLIST(), REALIST(), STRLIST(): type specific environment-list routines,
SETENVVAR() for setting environment variables from within a program
EQNAMElong enough to hold
LNAME's value. Values with lengths of up to 65535 bytes for I/O API-3.2 or later are supported. Values whose lengths exceed this limit will be truncated safely. (NOTE: ...up to 512 bytes for I/O API-3.1 and before; POSIX says that environment variables may have lengths this long.)
... CHARACTER*256 EQNAME LOGICAL FLAG ... CALL NAMEVAL( 'FOOFLAG', EQNAME ) ) THEN IF ( EQNAME .EQ. 'FOOFLAG' ) THEN !! ...NAMEVAL() failed, since EQNAME=LNAME. Maybe M3EXIT()? FLAG = .FALSE. ELSE !! ...EQNAME contains value of environment variable "FOO" CALL UPCASE( EQNAME ) ! makes it into ALLCAPS IF ( EQNAME .EQ. 'ON' ) THEN !! ...foo-flag should be set FLAG = .TRUE. ELSE !! ...foo-flag should be turned off FLAG = .FALSE. END IF END IF ...
Up: Utility Routines
To: Models-3/EDSS I/O API: The Help Pages