GETFILEINFOQQ

実行時関数:指定したファイルの情報を返します。ファイル名にワイルドカード (*?) を含むことができます。

モジュールUSE DFLIB

形式

result = GETFILEINFOQQ (files, buffer, handle)

files
(入力) CHARACTER*(*)。検索条件。フル・パス,ワイルドカード (*?) を含むことができます。

buffer
(入力) 構造型 FILE$INFO。検索条件に一致するファイルの情報。構造型 FILE$INFODFLIB.F90 (\DF98\INCLUDE サブディレクトリ) に以下のように定義されています。

TYPE FILE$INFO
  INTEGER(4) CREATION
  INTEGER(4) LASTWRITE
  INTEGER(4) LASTACCESS
  INTEGER(4) LENGTH
  INTEGER(4) PERMIT
  CHARACTER(255) NAME
END TYPE FILE$INFO

handle
(入力,出力) INTEGER(4)。制御メカニズム。DFLIB.F90 に定義されている以下の定数の 1 つです。

結果

結果の型は INTEGER(4) です。結果は,一致するものが見つかった場合,ファイル名の非空白の長さです。見つからなかった場合,0 になります。

複数のファイルの情報を得るには,handleFILE$FIRST を設定して GETFILEINFOQQ を呼び出します。これは,名前と一致する最初のファイルの情報を返し,handle を返します。プログラムが複数のファイルを必要とする場合,handle を指定して GETFILEINFOQQ を呼び出さなければなりません。GETFILEINFOQQhandleFILE$LAST を設定する,または,システム資源が失われるまで GETFILEINFOQQhandle を指定して呼び出されなければなりません。

構造型要素変数 FILE$INFO%CREATIONFILE$INFO%LASTWRITE,および FILE$INFO%LASTACCESS は,それぞれファイルが作成された,最後に書き込まれた,最後に参照された日時を示す詰め込まれた日時情報を含んでいます。日時を各成分に分解するには,UNPACKTIMEQQ を呼び出します。FILE$INFO%LENGTH は,ファイルの長さをバイトで持っています。FILE$INFO%PERMIT は,以下のようなファイルの参照情報を表すビット・プラグの組を持っています。

ビット・フラグ 説明
FILE$ARCHIVE ファイルがバックアップ装置にコピーされていることを示しています。
FILE$DIR 現在のディレクトリのサブディレクトリです。各 MS-DOS ディレクトリは 2 つの特殊なファイルを持っています。"."".." です。これらは,相対ディレクトリ表記に使われる MS-DOS が作成したディレクトリ別名です。第 1 は現在のディレクトリを参照し,第 2 は現在のディレクトリの親ディレクトリを参照します。
FILE$HIDDEN 隠されたファイルです。これは,コマンド行,Microsoft ビジュアル開発環境ブラウザ,ファイル・マネージャから要求したディレクトリ一覧には表示されません。
FILE$READONLY 読み取り専用ファイルです。このファイルを読むことはできますが,中身を変更することはできません。
FILE$SYSTEM オペレーティング・システムが使用するファイルです。
FILE$VOLUME 物理ディスク・ドライブ上の論理ボリュームまたはパーティションです。ファイルのこの形式は,物理装置のルート・ディレクトリにのみ現れます。

すべてのビット・フラグが 0 に設定されていることを確認するには,定数 FILE$NORMAL を使います。構造型要素変数 FILE$INFO%PERMITFILE$NORMAL に等しい場合,ファイルは特別な属性を持ちません。変数 FILE$INFO%NAME は,ファイルのフル・パスではなく,ファイルの短い名前をもちます。

エラーが発生した場合,GETLASTERRORQQ を呼び出してエラー・メッセージを取り出します。エラーには以下のものがあります。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

SETFILEACCESSQQSETFILETIMEQQUNPACKTIMEQQ

	USE DFLIB
	CALL SHOWPERMISSION( )
	END
	! GETFILEINFOQQ の例
	SUBROUTINE SHOWPERMISSION( )
	USE DFLIB
	CHARACTER(80)    files

	INTEGER(4)       handle, length
	CHARACTER(5)     permit
	TYPE (FILE$INFO) info

	WRITE (*, 900) ' Enter wildcard of files to view: '
	900 FORMAT (A, \)
	length = GETSTRQQ(files)
	handle = FILE$FIRST
	DO WHILE (.TRUE.)
	  length = GETFILEINFOQQ(files, info, handle)
	  IF ((handle .EQ. FILE$LAST) .OR. &
	    (handle .EQ. FILE$ERROR)) THEN
	  SELECT CASE (GETLASTERRORQQ( ))
	    CASE (ERR$NOMEM)
	      WRITE (*,*) 'Out of memory'
	    CASE (ERR$NOENT)
	      EXIT
	    CASE DEFAULT
	      WRITE (*,*) 'Invalid file or path name'
	  END SELECT
	  END IF
	  permit = ' '
	  IF ((info%permit .AND. FILE$HIDDEN) .NE. 0) &
	    permit(1:1) = 'H'
	  IF ((info%permit .AND. FILE$SYSTEM) .NE. 0) &
	    permit(2:2) = 'S'
	  IF ((info%permit .AND. FILE$READONLY) .NE. 0) &
	    permit(3:3) = 'R'
	  IF ((info%permit .AND. FILE$ARCHIVE) .NE. 0) &
	    permit(4:4) = 'A'
	  IF ((info%permit .AND. FILE$DIR) .NE. 0) &
	    permit(5:5) = 'D'
	  WRITE (*, 9000) info%name, info%length, permit
	9000  FORMAT (1X, A5, I9, ' ',A6)
	END DO
	END SUBROUTINE