Visible to Intel only — GUID: GUID-107CAD90-6C1C-4BB0-ADBE-3D089444CA8E
Visible to Intel only — GUID: GUID-107CAD90-6C1C-4BB0-ADBE-3D089444CA8E
STAT
Portability Function: Returns detailed information about a file.
Module
USE IFPORT
result = STAT (name,statb)
name |
(Input) Character*(*). Name 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:
|
Results
The result type is INTEGER(4).
On Windows* systems, the result is zero if the inquiry was successful; otherwise, the error code ENOENT (the specified file could not be found). On Linux* and macOS systems, the file inquired about must be currently connected to a logical unit and must already exist when STAT is called; if STAT fails, errnois set.
For a list of other error codes, see IERRNO.
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.
On Windows* systems, LSTAT returns exactly the same information as STAT. On Linux and macOS systems, if the file denoted by name is a link, LSTAT provides information on the link, while STAT provides information on the file at the destination of the link.
You can also use the INQUIRE statement to get information about file properties.
Example
USE IFPORT
CHARACTER*12 file_name
INTEGER(4) info_array(12)
print *, 'Enter file to examine: '
read *, file_name
ISTATUS = STAT (file_name, info_array)
if (.not. istatus) then
print *, info_array else
print *, 'Error = ',istatus
end if
end