INQUIRE 文は、ファイルに関する情報を返します。INQUIRE 文には、次の 3 つの形式があります:
ユニットによる照会
ファイル名による照会
出力項目リストによる照会
通常、ユニットによる照会は、開かれた (結合済み) ファイルに対して実行されます。ユニットによる照会によって、インテル® Fortran RTL は、指定されたユニットが結合されているかどうかをチェックします。ユニットの結合状況により、次のいずれかが発生します:
ユニットが結合されている場合:
EXIST 指定子および OPENED 指定子の変数が TRUE の値を示す
パス名とファイル名が NAME 指定子変数で返される (ファイルが指定されている場合)
以前に結合されたファイルに関して要求された他の情報が返される
OPEN 文にも関連する INQUIRE 指定子に対して、通常、デフォルトの値が返される
結合された書式付きファイルの RECL 値の単位には、常に 1 バイト単位が使用されます。書式なしファイルの場合、-assume byterecl オプションで 1 バイト単位を指定しない限り、RECL には 4 バイト単位が使用されます。
ユニットが結合されていない場合:
OPENED 指定子は FALSE の値を示す
ユニット番号 (NUMBER) 指定子変数が、-1 の値として返される
返されるその他の情報が、各種指定子の未定義値またはデフォルト値になる
以下の INQUIRE 文の例では次の 3 つが返されます。論理変数 I_OPENED には結合されたファイル (OPENED 指定子) がユニット 3 にあるかどうかが、文字変数 I_NAME にはそのファイル名 (大文字・小文字の区別あり) が、文字変数 I_ACTION にはそのファイルが READ、WRITE、または READWRITE 参照で開かれているかどうかが、それぞれ返されます。
INQUIRE (3, OPENED=I_OPENED, NAME=I_NAME, ACTION=I_ACTION)
ファイル名による照会によって、インテル Fortran RTL は、開かれているファイルのリストをスキャンし、一致するファイル名を検索します。一致するファイル名の有無により、次のいずれかが発生します:
ファイル名が一致した場合:
EXIST 指定子および OPENED 指定子の変数が TRUE の値を示す
パス名とファイル名が NAME 指定子変数で返される
UNIT 番号が NUMBER 指定子変数で返される
以前に結合されたファイルに関して要求された他の情報が返される
OPEN 文にも関連する INQUIRE 指定子に対して、通常、デフォルトの値が返される
結合された書式付きファイルの RECL 値の単位には、常に 1 バイト単位が使用されます。書式なしファイルの場合、-assume byterecl オプションで 1 バイト単位を指定しない限り、RECL には 4 バイト単位が使用されます。
ファイル名が一致しなかった場合:
OPENED 指定子変数は FALSE の値を示す
ユニット番号 (NUMBER) 指定子変数が、-1 の値として返される
EXIST 指定子変数が、指定されたファイル名がデバイスに存在するかどうかを示す (TRUE または FALSE)
実際にファイルが存在する場合は、NAME 指定子変数にパス名とファイル名が含まれている
返されるその他の情報が、INQUIRE の呼び出し時に指定された情報に基づき、各種指定子のデフォルト値になる
下の INQUIRE 文では次の 3 つが返されます。論理変数 I_OPEN には log_file という名前のファイルが結合済みのファイルであるかどうかが、論理変数 I_EXIST にはそのファイルが存在するかが、整数変数 I_NUMBER にはユニット番号がそれぞれ返されます。
INQUIRE (FILE='log_file', OPENED=I_OPEN, EXIST=I_EXIST, NUMBER=I_NUMBER)
ユニットおよび名前による照会とは異なり、出力項目リストによる照会は、外部ファイルにアクセスしません。この照会では、書式なし WRITE 文、READ 文、および REWRITE 文で使用される変数リストに関するレコード長が返されます。 以下の INQUIRE 文では、変数リストの最大レコード長を変数 I_RECLENGTH に返します。この変数は、その後 OPEN 文で RECL 値を指定するために使用されます。
INQUIRE (IOLENGTH=I_RECLENGTH) A, B, H
OPEN (FILE='test.dat', FORM='UNFORMATTED', RECL=I_RECLENGTH, UNIT=9)
書式なしファイルの場合、-assume byterecl オプションで 1 バイト単位を指定しない限り、IOLENGTH 値は 4 バイト単位として返されます。