INTEGER FUNCTION GETDFILE( LNAME, RDONLY, FMTFLAG, RECLEN, CALLER ) CHARACTER*(*) LNAME ! logical file name LOGICAL RDONLY ! TRUE iff file is input-only LOGICAL FMTFLAG ! TRUE iff file should be formatted INTEGER RECLEN ! direct access record length CHARACTER*(*) CALLER ! caller-name for logging
int getdfilec( const char * fname , int rstatus, int fstatus, int reclen, const char * pname )
WARNING: interpretation of RECLEN -- whether it measures record length in words or in bytes -- is vendor-dependent (and not always easy to dig out of the vendor's documentation).
Logs the file-opening, together with the CALLER version, and returns the unit number of the file opened, or -1 for failure.
Uses JUNIT() to get a unit number.
See also GETEFILE() for opening sequential Fortran files.
#include "iodecl3.h"
if called from C.
Logical name for the file set (else it will open a file with the indicated name in the current working directory).
If RDONLY, file must already exist.
If file already exists, record lengths must be consistent.
... INTEGER JDEV, KDEV, LDEV, MDEV INTEGER GETDFILE ... JDEV = GETDFILE( 'AFILE, .TRUE. , .TRUE. , 512, 'me' ) ! read-only formatted KDEV = GETDFILE( 'BFILE, .TRUE. , .FALSE., 512, 'me' ) ! read-only unformatted LDEV = GETDFILE( 'CFILE, .FALSE., .TRUE. , 512, 'me' ) ! read-write formatted MDEV = GETDFILE( 'DFILE, .FALSE., .FALSE., 512, 'me' ) ! read-write unformatted ... IF ( JDEV .LT. 0 ) THEN ! error opening AFILE: deal with it ... END IF ...etc... ...
... #include "iodecl3.h" ... integer jdev ; if ( 0 > ( jdev = getdfilec( "AFILE", 1, 1, 512, "me from C" ) ) ) { /* oops -- attempt to open file with logical name AFILE failed */ } ...
To: Models-3/EDSS I/O API: The Help Pages