program demo_system_stat use M_system, only : system_stat, system_getpwuid, system_getgrgid use M_time, only : fmtdate, u2d use, intrinsic :: iso_fortran_env, only : int32, int64 implicit none integer(kind=int64) :: buff(13) integer(kind=int32) :: status character(len=*),parameter :: fmt_date='year-month-day hour:minute:second' integer(kind=int64) :: & Device_ID, Inode_number, File_mode, Number_of_links, Owner_uid, & Owner_gid, Directory_device, File_size, Last_access, Last_modification,& Last_status_change, Preferred_block_size, Number_of_blocks_allocated equivalence & ( buff(1) , Device_ID ) , & ( buff(2) , Inode_number ) , & ( buff(3) , File_mode ) , & ( buff(4) , Number_of_links ) , & ( buff(5) , Owner_uid ) , & ( buff(6) , Owner_gid ) , & ( buff(7) , Directory_device ) , & ( buff(8) , File_size ) , & ( buff(9) , Last_access ) , & ( buff(10) , Last_modification ) , & ( buff(11) , Last_status_change ) , & ( buff(12) , Preferred_block_size ) , & ( buff(13) , Number_of_blocks_allocated ) CALL SYSTEM_STAT("/etc/hosts", buff, status) if (status == 0) then write (*, FMT="('Device ID(hex/decimal):', & & T30, Z0,'h/',I0,'d')") buff(1),buff(1) write (*, FMT="('Inode number:', & & T30, I0)") buff(2) write (*, FMT="('File mode (octal):', & & T30, O19)") buff(3) write (*, FMT="('Number of links:', & & T30, I0)") buff(4) write (*, FMT="('Owner''s uid/username:', & & T30, I0,1x, A)") buff(5), system_getpwuid(buff(5)) write (*, FMT="('Owner''s gid/group:', & & T30, I0,1x, A)") buff(6), system_getgrgid(buff(6)) write (*, FMT="('Device where located:', & & T30, I0)") buff(7) write (*, FMT="('File size(bytes):', & & T30, I0)") buff(8) write (*, FMT="('Last access time:', & & T30, I0,1x, A)") buff(9), fmtdate(u2d(int(buff(9))),fmt_date) write (*, FMT="('Last modification time:', & & T30, I0,1x, A)") buff(10),fmtdate(u2d(int(buff(10))),fmt_date) write (*, FMT="('Last status change time:', & & T30, I0,1x, A)") buff(11),fmtdate(u2d(int(buff(11))),fmt_date) write (*, FMT="('Preferred block size(bytes):', & & T30, I0)") buff(12) write (*, FMT="('No. of blocks allocated:', & & T30, I0)") buff(13) endif end program demo_system_stat