インテル® Fortran コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス

IOSTAT 指定子と Fortran 終了コードの使用

IOSTAT 指定子を使用すると、I/O エラー条件、ファイル終了条件、またはレコード終了条件の発生後にプログラムの実行を続け、I/O 操作のステータス情報を返すことができます。エラー条件によっては、IOSTAT に返されないものもあります。

IOSTAT 指定子は、END=、EOR=、および ERR= 分岐指定子を補足または置き換えることができます。

I/O 文で IOSTAT= 指定子を使用すると、I/O 文の実行中にエラーが発生した場合にエラー終了が開始しないようにします。IOSTAT= 指定子で指定した整数変数は、I/O 文の実行中に次の値に定義されます。

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 システムのエラーコードを取得します。

関連情報