STAT

可搬用関数:ファイルに関する詳細情報を返します。

モジュールUSE DFPORT

形式

result = STAT (name, statb)

name
(入力) CHARACTER*(*)。検証するファイル名。

statb
(出力) INTEGER(4)。大きさが 12 の 1 次元配列。

結果

結果の型は INTEGER(4) です。問合せが成功した場合,結果はゼロで,そうでなければ,エラーコード ENOENT (指定したファイルが開けませんでした) です。その他のエラー・コートの一覧は,「IERRNO」を参照してください。

statb の要素は,以下の値を含んでいます。

要素 説明 注意
statb(1) ファイルのある装置 常に 0
statb(2) ファイル Inode 番号 常に 0
statb(3) ファイルの参照許可モード (以下の表を参照)
statb(4) ハード・リンク数 常に 1
statb(5) 所有者のユーザー ID 常に 1
statb(6) 所有者のグループ ID 常に 1
statb(7) ファイルがあるロー・デバイス 常に 0
statb(8) ファイルの大きさ (バイト)  
statb(9) ファイルが最後に参照された時刻 (非 FAT ファイル・システムのみ。FAT システムでは未定義。)
statb(10) ファイルが最後に修正された時刻  
statb(11) 最後にファイル状態が変更された時刻 stat(10) と同じ
statb(12) ブロック・サイズ 常に 1

時刻は TIME 関数が返すのと同じ書式 (グリニッジ平均時 1970 年 1 月 1 日 00:00:00 からの秒数) です。

ファイル参照許可モード (statb の第 3 要素) は以下の定数の IOR で構成されるビットマップです。

シンボル名 定数 説明 注意
S_IFMT O'0170000' ファイル形式  
S_IFDIR O'0040000' ディレクトリ  
S_IFCHR O'0020000' 特殊文字 決して設定されない
S_IFBLK O'0060000' 特殊ブロック 決して設定されない
S_IFREG O'0100000' レギュラー  
S_IFLNK O'0120000' シンボリック・リンク 決して設定されない
S_IFSOCK O'0140000' ソケット 決して設定されない
S_ISUID O'0004000' 実行時のユーザー ID を設定 決して設定されない
S_ISGID O'0002000' 実行時のグループ ID を設定 決して設定されない
S_ISVTX O'0001000' スワップ・テキストを保存 決して設定されない
S_IRWXU O'0000700' 所有者のファイル特権  
S_IRUSR,
S_IREAD
O'0000400' 所有者の読み取り特権 常に真
S_IWUSR,
S_IWRITE
O'0000200' 所有者の書き込み特権  
S_IXUSR,
S_IEXEC
O'0000100' 所有者の実行特権 ファイル拡張子に依存 (.EXE, .COM, .CMD, または .BAT)
S_IRWXG O'0000070' グループのファイル特権 S_IRWXU と同じ
S_IRGRP O'0000040' グループの読み取り特権 S_IRUSR と同じ
S_IWGRP O'0000020' グループの書き込み特権 S_IWUSR と同じ
S_IXGRP O'0000010' グループの実行特権 S_IXUSR と同じ
S_IRWXO O'0000007' その他のファイル特権 S_IRWXU と同じ
S_IROTH O'0000004' その他の読み取り特権 S_IRUSR と同じ
S_IWOTH O'0000002' その他の書き込み特権 S_IWUSR と同じ
S_IXOTH O'0000001' その他の実行特権 S_IXUSR と同じ

STATFSTAT と同じ情報を返しますが,外部装置番号の代わりに名前でファイルを参照します。

注意INQUIRE 文もまた,ファイル・プロパティに関する情報を提供します。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

GETFILEINFOQQINQUIRE

	USE DFPORT
	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