INQUIRE

:ファイルまたは論理装置の指定されたプロパティに関する情報を返します。これは以下のいずれかの形式を取ります。

形式

ファイルによる問い合わせ

INQUIRE (FILE=name[,ERR=label][,IOSTAT=i-var][,DEFAULTFILE=def], slist)

装置による問い合わせ

INQUIRE ([UNIT=]io-unit[,ERR=label][,IOSTAT=i-var],slist)

出力並びによる問い合わせ

INQUIRE (IOLENGTH=len) out-item-list

name
問い合わせの対象となるファイル名を指定するスカラ基本文字式。

label
エラーが発生した場合に制御を受け取る飛び先文の文番号。

i-var
エラーが発生した場合には正の整数,エラーが発生しなかった場合にはゼロとして定義されるスカラ整数変数。

slist
1 つまたは複数の問合せ指定子です (個々の指定子は 1 回しか指定できません)。

ACCESS DELIM NAMED READWRITE
ACTION DIRECT NEXTREC RECL
BINARY EXIST NUMBER RECORDTYPE
BLANK FORM OPENED SEQUENTIAL
BLOCKSIZE FORMATTED ORGANIZATION SHARE
BUFFERED IOFOCUS PAD UNFORMATTED
CARRIAGECONTROL MODE POSITION WRITE
CONVERT NAME READ  

def
基本ファイル・パス名文字列を指定するスカラ基本文字式 (詳細は,「DEFAULTFILE 指定子」を参照してください)。

io-unit
外部装置指定子。

この装置は存在している必要はなく,ファイルに接続されている必要もありません。装置がファイルに接続されている場合,問い合わせは接続とファイルの両方を対象とします。

len
(出力) WRITE 文中で out-item-list を使ったことにより生成される書式なし直接探査記録の長さに対応する値が割り当てられるスカラ基本整数変数。

値は,書式なし直接探査ファイルに接続された OPEN 文での RECL 指定子の値として使用できるものです。

値の単位は,基本設定で 4 バイト・ロングワードです。しかしながら,コンパイラ・オプション /assume:byterecl を指定することで,単位を変更することができます。

out-item-list
(出力) 1 つまたは複数の出力項目の並び (「I/O 並び」を参照)。

規則と振る舞い

制御指定子 ([UNIT=]io-unit, ERR=label, および IOSTAT=i-var) と問合せ指定子は,INQUIRE の後の括弧内の任意の場所に指定することができます。ただし,UNIT 指定子が省略されている場合,io-unit が並びの先頭になくてはなりません。

INQUIRE 文は,ファイルが装置に接続される前,途中,または後に実行することができます。返される指定子の値は,INQUIRE 文の実行時の値です。

ファイルの特性を得るには,ファイルを開いた後に INQUIRE 文を指定してください。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

INQUIREOPEN

以下に INQUIRE 文の例を示します。

	INQUIRE (FILE='FILE_B', EXIST=EXT)
	INQUIRE (4, FORM=FM, IOSTAT=IOS, ERR=20)
	INQUIRE (IOLENGTH=LEN) A, B

最後の文では,LEN に返される長さを,書式なし直接探査ファイルを接続する OPEN 文中の RECL 指定子の値として使用することができます。すでに RECL の値を指定している場合,LEN を検証して,AB が事前に指定した記録長以下であるかどうかを確認することができます。

以下に他の例を示します。

	!	このプログラムは,データ・ファイルの名前の入力を要求します。
	!	INQUIRE 文は,ファイルが存在するかどうかを確認します。
	!	存在しなければ,このプログラムは他のファイル名の入力を要求します。

		CHARACTER*12 fname
		LOGICAL exists

	!	ファイル名を得ます。
	100	WRITE (*, '(1X, A\)') 'Enter the file name: '
		READ (*, '(A)') fname

	!	ファイルが存在するかどうかを問い合せます。
		INQUIRE (FILE = fname, EXIST = exists)

		IF (.NOT. exists) THEN
		  WRITE (*,'(2A/)') ' >> Cannot find file ', fname
		  GOTO 100
		END IF
		END