インテル® Fortran コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
プログラムの実行時 (ランタイム時) にエラーが発生すると、インテル® Visual Fortran ランタイムシステムは診断メッセージを発行します。
Fortran ランタイムメッセージが表示される場所は、プロジェクトの種類によって異なります。
プロジェクトの種類 |
メッセージの表示場所 |
---|---|
Fortran コンソール・アプリケーション |
ランタイム・エラー・メッセージは (リダイレクトされていない限り) 標準エラーデバイスに表示されます。 |
Fortran QuickWin および Fortran スタンダード・グラフィックス・アプリケーション |
ランタイム・エラー・メッセージは独立した QuickWin メッセージボックスに表示されます。 |
Fortran ウィンドウ・アプリケーション |
ランタイム・エラー・メッセージは独立したメッセージボックスに表示されます。 |
次に、Fortran ランタイムメッセージの書式を示します。
forrtl: severity (number): message-text
説明:
forrtl: ソースがインテル® Fortran ランタイムシステム (ランタイム・ライブラリーまたは RTL) であることを示します。
severity: 重要度レベルは、severe (致命的なエラー)、error (エラー)、warning (警告)、info (情報) です。
number: メッセージ番号です。I/O 文の IOSTAT 値でもあります。
message-text: メッセージを引き起こしたイベントについての説明です。
次の表は、ランタイムメッセージの重要度レベルを、重要度の高い順に説明します。ランタイム・エラー・メッセージの重要度は、プログラムの実行を続けるかどうかを決定します。
重要度 |
説明 |
---|---|
severe (致命的なエラー) |
問題を修正する必要があります。プログラムの I/O 文で END、EOR、または ERR 分岐指定子を使用して、IOSTAT 指定子を使用するルーチンなどに制御を渡さない限り、プログラムの実行はエラー検出時に終了します (「END、EOR、および ERR 分岐指定子の使用」、「IOSTAT 指定子と Fortran 終了コードの使用」、および「エラーの処理方法」を参照してください)。 重要度レベルが severe のエラーでは、FOR_DISABLE_STACK_TRACE 環境変数が設定されていない限り、スタックトレース情報がデフォルトで表示されます。この環境変数が設定されている場合、スタックトレース情報は生成されません。 コマンドラインで traceback コマンドライン・オプションが指定されると、スタックトレース情報にはシンボリック情報に対して設定されたプログラムカウンターが含まれます。それ以外の場合、スタックトレース情報には単に 16 進数のプログラムカウンター情報が含まれます。 場合によっては、スタックトレース情報はコンパイルされたコードによってランタイム時に生成され、配列の一時変数の作成に関する詳細を提供します。 |
error (エラー) |
問題を修正する必要があります。プログラムの実行を続けることはできても、出力に誤りがある可能性があります。 重要度レベルが「エラー」のエラーでは、FOR_DISABLE_STACK_TRACE 環境変数が設定されていない限り、スタックトレース情報がデフォルトで表示されます。この環境変数が設定されている場合、スタックトレース情報は生成されません。 traceback コマンドライン・オプションが指定されると、スタックトレース情報にはシンボリック情報に対して設定されたプログラムカウンターが含まれます。それ以外の場合、スタックトレース情報には単に 16 進数のプログラムカウンター情報が含まれます。 場合によっては、スタックトレース情報はコンパイルされたコードによってランタイム時に生成され、配列の一時変数の作成に関する詳細を提供します。 |
warning (警告) |
問題を調査する必要があります。プログラムの実行は続行しますが、出力に誤りがある可能性があります。 |
info (情報) |
情報提供のみを目的とし、プログラムの実行は続行されます。 |
インテル® Fortran の各ランタイム・エラー・メッセージに関する説明は、「ランタイムのデフォルトのエラー処理」および関連トピックを参照してください。
Linux* および macOS* の例:
場合によっては、スタックトレース情報はコンパイルされたコードによってランタイム時に生成され、配列の一時変数の作成に関する詳細を提供します。
次のプログラムは、12 行目でエラーを表示します。
program ovf real*4 x(5),y(5) integer*4 i x(1) = -1e32 x(2) = 1e38 x(3) = 1e38 x(4) = 1e38 x(5) = -36.0 do i=1,5 y(i) = 100.0*(x(i)) print *, 'x = ', x(i), ' x*100.0 = ',y(i) end do end
次のコマンドは、プログラムの実行ファイルに対するスタックトレース情報を生成します。
> ifort -O0 -fpe0 -traceback ovf.f90 -o ovf.exe
> ovf.exe
x = -1.0000000E+32 x*100.0
= -1.0000000E+34
forrtl: エラー (72): 浮動小数点オーバーフロー
Image PC Routine Line Source
ovf.exe 08049E4A MAIN__ 14 ovf.f90
ovf.exe 08049F08 Unknown Unknown Unknown
ovf.exe 400B3507 Unknown Unknown Unknown
ovf.exe 08049C51 Unknown Unknown Unknown
Abort
次のコマンドでは FOR_DISABLE_STACK_TRACE 環境変数が設定されているため、スタックトレース情報は生成されません。
> setenv FOR_DISABLE_STACK_TRACE true
> ovf.exe
x = -1.0000000E+32 x*100.0 = -1.0000000E+34
forrtl: エラー (72): 浮動小数点オーバーフロー
Abort
libifcore、libirc、および libm ランタイム・ライブラリーには、それぞれ付属のメッセージカタログがあります。これらのライブラリーのメッセージを表示する場合、ライブラリーは NLSPATH 環境変数 (Linux* および macOS*) または %PATH% 環境変数 (Windows*) で指定されたディレクトリーにあるメッセージカタログを検索します。メッセージカタログが見つからない場合、メッセージは英語で表示されます。
メッセージカタログの名前は次のとおりです。
libifcore メッセージカタログと関連するテキスト・メッセージ・ファイル |
Linux* および macOS* |
ifcore_msg.cat ifcore_msg.msg |
Windows* |
ifcore_msg.dll ifcore_msg.mc |
|
libirc メッセージカタログと関連するテキスト・メッセージ・ファイル |
Linux* および macOS* |
irc_msg.cat irc_msg.msg |
Windows* |
irc_msg.dll irc_msg.mc |
|
libm メッセージカタログと関連するテキスト・メッセージ・ファイル |
Linux* および macOS* |
libm.cat libm.msg |
Windows* |
libmUI.dll libmUI.mc |