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

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

IOSTAT 指定子を使用すると、I/O エラーの発生後にプログラムの実行を続け、I/O 操作に関する情報を返すことができます。エラーによっては、IOSTAT に返されないものもあります。

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

IOSTAT 指定子を含む I/O 文が実行されると、エラーメッセージは表示されず、整数変数、配列要素、またはスカラーフィールド参照に次のいずれかの値が設定されます (この値は、プログラムが終了するときに終了コードとして返されます)。

I/O 文の実行と IOSTAT 値の割り当てが行われた後、制御は (指定されている場合) END 文、EOR 文、または ERR 文の文番号に移ります。制御が移らない場合、通常の実行が続けられます。

プログラムに for_iosdef.for ファイルをインクルードすると、IOSTAT 値のシンボリック定義を利用できるようになります。

次の例は、IOSTAT 指定子と for_iosdef.for ファイルを使用して、OPEN 文のエラー (FILE 指定子の中) を処理します。

    CHARACTER(LEN=40) :: FILNM
    INCLUDE 'for_iosdef.for'
    DO I=1,4
      FILNM = ''
      WRITE (6,*)  'Type file name '
      READ (5,*) FILNM
      OPEN (UNIT=1, FILE=FILNM, STATUS='OLD', IOSTAT=IERR, ERR=100)
      WRITE (6,*) 'Opening file: ', FILNM
      ! 
      !  入力ファイルを処理するユーザーコードをここに記述
      ! 
      CLOSE (UNIT=1)
      STOP
  100 IF (IERR .EQ. FOR$IOS_FILNOTFOU) THEN
        WRITE (6,*) 'File: ', FILNM, ' does not exist '
      ELSE IF (IERR .EQ. FOR$IOS_FILNAMSPE) THEN
        WRITE (6,*) 'File: ', FILNM, ' was bad, enter new file name'
      ELSE
        PRINT *, 'Unrecoverable error, code =', IERR
        STOP
      END IF
    END DO
    WRITE (6,*) 'File not found.Locate correct file with Explorer and run again'
  END PROGRAM

エラーを取得する別の方法として、ERRSNS サブルーチンを使う方法があります。このサブルーチンは、インテル® Fortran RTL エラー (詳細は、「Language Reference」(英語) を参照してください。) に関連した最後の I/O システムのエラーコードを取得します。

関連情報