SUBROUTINE RUNSPEC( FNAME, USEENV, SDATE, STIME, TSTEP, NRECS )
        CHARACTER(LEN=*), INTENT(IN   ) :: FNAME        !!  input file
        LOGICAL,          INTENT(IN   ) :: USEENV       !!  input file
        INTEGER,          INTENT(  OUT) :: SDATE        !!  starting date YYYYDDD
        INTEGER,          INTENT(  OUT) :: STIME        !!  starting time  H*MMSS
        INTEGER,          INTENT(  OUT) :: TSTEP        !!  time step      H*MMSS
        INTEGER,          INTENT(  OUT) :: NRECS        !!  Number of records
Return time step sequenceSDATE:STIME:TSTEP:NRECSconsistent with (and with default values from) fileFNAME.If
FNAMEis blank, defaults are from the current wall-clock date&time.
IfFNAMEis time independent,SDATE=STIME=TSTEP=0; NRECS=1
IfUSEENV, get values from environment variablesSDATE, STIME, TSTEP, EDATE, ETIMEand use them to determine the results; else prompt the user for those values.NOTE: does not assume that
FNAMEis already completed (it would be an error to do so within some modeling workflows).I/O API-3.2 or later, only.
For Fortran-90 declarations and interface checking:
USE M3UTILIOSee also CURREC(), GETDATE(), GETDTTIME(), ENVINT(), GETNUM(), JSTEP3().
IfUSEENV:setenv SDATE <starting date (YYYYDDD)> setenv STIME <starting time (HHMMSS)> setenv TSTEP <time step (H*MMSS)> setenv EDATE <ending date (YYYYDDD)> setenv ETIME <ending date (HHMMSS)>
The following example will prompt the user forSDATE, STIME, TSTEP, EDATE, ETIME(since argumentUSEENV=.FALSE.), and then run accordingly:
    ...
    USE M3UTILIO
    ...
    CHARACTER, PARAMETER :: FNAME = 'METCRO2D'
    ...
    INTEGER     SDATE, STIME, TSTEP, NRECS
    INTEGER     JDATE, JTIME, N
    ...
    IF ( OPEN3( FNAME...
    ...
    CALL RUNSPEC( FNAME, .FALSE., SDATE, STIME, TSTEP, NRECS )
    ...
    JDATE = SDATE
    JTIME = STIME
    DO N = 1, NRECS     !!  main loop on time steps
        ...
        CALL NEXTIME( JDATE, JTIME, TSTEP )
    END DO              !!  end loop on timesteps
    ...
Don't, unless you're already very comfortable with mixed-language programming.
Up: Date-Time Manipulation Routines
To: Models-3/EDSS I/O API: The Help Pages