Intel® Fortran Compiler 17.0 Developer Guide and Reference

FSTAT

Portability Function: Returns detailed information about a file specified by a external unit number.

Module

USE IFPORT

result = FSTAT (lunit,statb)

lunit

(Input) INTEGER(4). External unit number of the file to examine.

statb

(Output) INTEGER(4) or INTEGER(8). One-dimensional array of size 12; where the system information is stored. The elements of statb contain the following values:

Element

Description

Values or Notes

statb(1)

Device the file resides on

W*S: Always 0

L*X: System dependent

statb(2)

File inode number

W*S: Always 0

L*X: System dependent

statb(3)

Access mode of the file

See the table in Results

statb(4)

Number of hard links to the file

W*S: Always 1

L*X: System dependent

statb(5)

User ID of owner

W*S: Always 1

L*X: System dependent

statb(6)

Group ID of owner

W*S: Always 1

L*X: System dependent

statb(7)

Raw device the file resides on

W*S: Always 0

L*X: System dependent

statb(8)

Size of the file

statb(9)

Time when the file was last accessed1

W*S: Only available on non-FAT file systems; undefined on FAT systems

L*X: System dependent

statb(10)

Time when the file was last modified1

statb(11)

Time of last file status change1

W*S: Same as stat(10)

L*X: System dependent

statb(12)

Blocksize for file system I/O operations

W*S: Always 1

L*X: System dependent

1Times are in the same format returned by the TIME function (number of seconds since 00:00:00 Greenwich mean time, January 1, 1970).

Results

The result type is INTEGER(4). The result is zero if successful; otherwise, returns an error code equal to EINVAL (lunit is not a valid unit number, or is not open).

The access mode (the third element of statb) is a bitmap consisting of an IOR of the following constants:

Symbolic name

Constant

Description

Notes

S_IFMT

O'0170000'

Type of file

S_IFDIR

O'0040000'

Directory

S_IFCHR

O'0020000'

Character special

Never set on Windows* systems

S_IFBLK

O'0060000'

Block special

Never set on Windows systems

S_IFREG

O'0100000'

Regular

S_IFLNK

O'0120000'

Symbolic link

Never set on Windows systems

S_IFSOCK

O'0140000'

Socket

Never set on Windows systems

S_ISUID

O'0004000'

Set user ID on execution

Never set on Windows systems

S_ISGID

O'0002000'

Set group ID on execution

Never set on Windows systems

S_ISVTX

O'0001000'

Save swapped text

Never set on Windows systems

S_IRWXU

O'0000700'

Owner's file permissions

S_IRUSR, S_IREAD

O'0000400'

Owner's read permission

Always true on Windows systems

S_IWUSR, S_IWRITE

O'0000200'

Owner's write permission

S_IXUSR, S_IEXEC

O'0000100'

Owner's execute permission

Based on file extension (.EXE, .COM, .CMD, or .BAT)

S_IRWXG

O'0000070'

Group's file permissions

Same as S_IRWXU on Windows systems

S_IRGRP

O'0000040'

Group's read permission

Same as S_IRUSR on Windows systems

S_IWGRP

O'0000020'

Group's write permission

Same as S_IWUSR on Windows systems

S_IXGRP

O'0000010'

Group's execute permission

Same as S_IXUSR on Windows systems

S_IRWXO

O'0000007'

Other's file permissions

Same as S_IRWXU on Windows systems

S_IROTH

O'0000004'

Other's read permission

Same as S_IRUSR on Windows systems

S_IWOTH

O'0000002'

Other's write permission

Same as S_IWUSR on Windows systems

S_IXOTH

O'0000001'

Other's execute permission

Same as S_IXUSR on Windows systems

STAT returns the same information as FSTAT, but accesses files by name instead of external unit number.

Example

USE IFPORT
integer(4) statarray(12), istat
OPEN (unit=1,file='datfile.dat')
ISTAT = FSTAT (1, statarray)
if (.NOT. istat) then
    print *, statarray
end if

See Also