Next: SUM, Previous: SRAND, Up: Intrinsic Procedures
STAT — Get file statusThe elements that are obtained and stored in the array VALUES:
     
VALUES(1)    | Device ID
 | 
VALUES(2)    | Inode number
 | 
VALUES(3)    | File mode
 | 
VALUES(4)    | Number of links
 | 
VALUES(5)    | Owner's uid
 | 
VALUES(6)    | Owner's gid
 | 
VALUES(7)    | ID of device containing directory entry for file (0 if not available)
 | 
VALUES(8)    | File size (bytes)
 | 
VALUES(9)    | Last access time
 | 
VALUES(10)   | Last modification time
 | 
VALUES(11)   | Last file status change time
 | 
VALUES(12)   | Preferred I/O block size (-1 if not available)
 | 
VALUES(13)   | Number of blocks allocated (-1 if not available)
      | 
Not all these elements are relevant on all systems. If an element is not relevant, it is returned as 0.
This intrinsic is provided in both subroutine and function forms; however,
only one form can be used in any given program unit.
     
CALL STAT(NAME, VALUES [, STATUS])
     | NAME | The type shall be CHARACTER, of the
default kind and a valid path within the file system. 
 | 
| VALUES | The type shall be INTEGER(4), DIMENSION(13). 
 | 
| STATUS | (Optional) status flag of type INTEGER(4). Returns 0
on success and a system specific error code otherwise.
      | 
          PROGRAM test_stat
            INTEGER, DIMENSION(13) :: buff
            INTEGER :: status
          
            CALL STAT("/etc/passwd", buff, status)
          
            IF (status == 0) THEN
              WRITE (*, FMT="('Device ID:',               T30, I19)") buff(1)
              WRITE (*, FMT="('Inode number:',            T30, I19)") buff(2)
              WRITE (*, FMT="('File mode (octal):',       T30, O19)") buff(3)
              WRITE (*, FMT="('Number of links:',         T30, I19)") buff(4)
              WRITE (*, FMT="('Owner''s uid:',            T30, I19)") buff(5)
              WRITE (*, FMT="('Owner''s gid:',            T30, I19)") buff(6)
              WRITE (*, FMT="('Device where located:',    T30, I19)") buff(7)
              WRITE (*, FMT="('File size:',               T30, I19)") buff(8)
              WRITE (*, FMT="('Last access time:',        T30, A19)") CTIME(buff(9))
              WRITE (*, FMT="('Last modification time',   T30, A19)") CTIME(buff(10))
              WRITE (*, FMT="('Last status change time:', T30, A19)") CTIME(buff(11))
              WRITE (*, FMT="('Preferred block size:',    T30, I19)") buff(12)
              WRITE (*, FMT="('No. of blocks allocated:', T30, I19)") buff(13)
            END IF
          END PROGRAM