インテル® Fortran コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
IOSTAT 指定子を使用すると、I/O エラー条件、ファイル終了条件、またはレコード終了条件の発生後にプログラムの実行を続け、I/O 操作のステータス情報を返すことができます。エラー条件によっては、IOSTAT に返されないものもあります。
IOSTAT 指定子は、END=、EOR=、および ERR= 分岐指定子を補足または置き換えることができます。
I/O 文で IOSTAT= 指定子を使用すると、I/O 文の実行中にエラーが発生した場合にエラー終了が開始しないようにします。IOSTAT= 指定子で指定した整数変数は、I/O 文の実行中に次の値に定義されます。
I/O 文が通常終了した場合 (エラー条件、ファイル終了条件、レコード終了条件が発生しない場合) は 0。
エラー条件やファイル終了条件は発生しないが、入力文の実行中にレコード終了条件が発生した場合は、組込み関数モジュール ISO_FORTRAN_ENV で定義される (負の) デフォルトの整数スカラー定数 IOSTAT_EOR の値。
エラー条件は発生しないが、入力文の実行中にファイル終了条件が発生した場合は、組込み関数モジュール ISO_FORTRAN_ENV で定義される (負の) デフォルトの整数スカラー定数 IOSTAT_END の値。
INQUIRE 文では、文の実行時にファイルユニット番号が内部ユニットを識別する場合、ISO_FORTRAN_ENV で定義されるデフォルトの整数定数 IOSTAT_INQUIRE_INTERNAL_UNIT の値。
エラー状態が発生した場合の値は、正の整数。(この値は、ランタイム時のエラーメッセージのリストにある Fortran 固有の IOSTAT 番号の 1 つです。エラーメッセージの一覧は、「ランタイム・エラー・メッセージのリスト」を参照してください)。
IOSTAT 変数に代入される値は、エラー終了が開始された場合に終了コードとして返される値と同じです。
I/O 文の実行と IOSTAT 値の割り当てが行われた後、制御は (指定されている場合) END= 文、EOR= 文、または ERR= 文の文番号に移ります。制御が移らない場合、通常の実行が続けられます。
非標準のインクルード・ファイル FOR_ISODEF.FOR と非標準のモジュール FORISODEF には、IOSTAT= 識別子で返される値のシンボル定数が含まれます。
次の例は、IOSTAT 指定子と FORIOSDEF モジュールを使用して、OPEN 文のエラー (FILE 指定子の中) を処理します。
USE foriosdef
IMPLICIT NONE
CHARACTER(LEN=40) :: FILNM
INTEGER IERR
PRINT *, 'Type file name:'
READ (*,*) FILNM
OPEN (UNIT=1, FILE=FILNM, STATUS='OLD', IOSTAT=IERR, ERR=100)
PRINT *, 'Opening file: ', FILNM
! 入力ファイルの処理
...
CLOSE (UNIT=1)
STOP
100 IF(IERR .EQ.FOR$IOS_FILNOTFOU) THEN
PRINT *, 'File: ', FILNM, ' does not exist '
ELSE
PRINT *, 'Unrecoverable error, code =', IERR
END IF
END PROGRAM
エラーを取得する別の方法として、ERRSNS サブルーチンを使う方法があります。このサブルーチンは、インテル® Fortran RTL エラー (詳細は、「Language Reference」(英語) を参照してください。) に関連した最後の I/O システムのエラーコードを取得します。