インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
INQUIRE 文は、ファイルに関する情報を返します。INQUIRE 文には、次の形式があります。
ユニットによる照会
ファイル名による照会
出力項目リストによる照会
ディレクトリーによる照会
通常、ユニットによる照会は、開かれた (結合済み) ファイルに対して実行されます。ユニットによる照会によって、インテル® 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 バイト単位として返されます。
ディレクトリーによる照会は、ディレクトリーが存在することを確認します。
ディレクトリーが存在する場合:
EXIST 指定子変数は TRUE の値を示します。
完全ディレクトリー・パス名が DIRSPEC 指定子変数で返されます。
ディレクトリーが存在しない場合:
EXIST 指定子変数は FALSE の値を示します。
DIRSPEC 指定子の値は変更されません。
例えば、次の INQUIRE 文は完全ディレクトリー・パス名を返します。
LOGICAL ::L_EXISTS
CHARACTER (255)::C_DIRSPEC
INQUIRE (DIRECTORY=".", DIRSPEC=C_DIRSPEC, EXIST=L_EXISTS)
次の INQUIRE 文は、ディレクトリーが存在しないことを確認します。
INQUIRE (DIRECTORY="I-DO-NOT-EXIST", EXIST=L_EXISTS)