FSTAT

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

Module: USE IFPORT

Syntax

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*32, W*64: Always 0
L*X: System dependent
statb(2) File inode number W*32, W*64: 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*32, W*64: Always 1
L*X: System dependent
statb(5) User ID of owner W*32, W*64: Always 1
L*X: System dependent
statb(6) Group ID of owner W*32, W*64: Always 1
L*X: System dependent
statb(7) Raw device the file resides on W*32, W*64: Always 0
L*X: System dependent
statb(8) Size of the file  
statb(9) Time when the file was last accessed1 W*32, W*64: 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*32, W*64: Same as stat(10)
L*X: System dependent
statb(12) Blocksize for file system I/O operations W*32, W*64: Always 1
L*X: System dependent
1 Times 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.

Compatibility

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

See Also

INQUIRE, STAT

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