実行時の問題の修正

以下のいずれかの場合に、XL Fortran はプログラムの 実行中にエラー・メッセージを出します。

プログラムの実行中に起きるエラーは、gdb などのシンボリック・デバッガーを使用して調べることができます。

他のシステムからの拡張機能の再現

移植されたプログラムが他のシステムにある拡張機能に依存している場合、 これらの中には正しく実行されないものがあります。 XL Fortran はそのような拡張機能を多数サポートしていますが、それらのいくつかを 使用するにはコンパイラー・オプションをオンにしなければなりません。 これらのオプションのリストに関しては 互換性を維持するためのオプションを参照し、 移植に関する概要は XL Fortran へのプログラムの移植を参照してください。

引き数のサイズまたは型の不一致

サイズまたは型が異なる引き数によって、 不正な実行および結果が発生する可能性があります。コンパイルの初期段階で型のチェックを行うには、プログラム内で 呼び出されるプロシージャーに対してインターフェース・ブロックを指定してください。

最適化するときの問題の回避策

最適化すると、プログラムが誤った結果を発生させることがわかっていて、 問題を特定の変数に限定できる場合は、その変数 を VOLATILE と宣言することによって、 問題を一時的に回避することができ、したがって、変数に影響を与える 最適化を防止できる場合もあります。 (「XL Fortran ランゲージ・リファレンス」の『VOLATILE』を参照。) これは一時的な 解決策に過ぎないので、問題を解決するまでコードのデバッグを続行して、 その後に VOLATILE キーワードを 除去してください。 ソース・コードとプログラム設計が正しいと確信していて、問題が続行する場合は、 問題を解決するためにユーザーのサポート部門に連絡を取ってください。

入出力エラー

検出されたエラーが入出力エラーで、ユーザーがエラーの入出力ステートメント に IOSTAT を指定していた場合は、 IOSTAT 変数に「XL Fortran ランゲージ・リファレンス」の 『条件および IOSTAT 値』に従って値が割り当てられます。

プログラムが実行されているシステム上に XL Fortran 実行時メッセージ・カタログを インストールした場合は、ある一定の I/O エラーに対して、メッセージ番号と メッセージ・テキストが端末 (標準エラー) に送出されます。 入出力ステートメントで IOMSG を指定した場合は、 エラーが検出されると、エラー・メッセージ・テキストが IOMSG 変数に割り当てられます。 エラーが検出されない場合、IOMSG 変数の内容は変更されません。このカタログがシステムにインストールされていないと、 メッセージ番号だけが表示されます。 実行時オプションの設定の記載されているいくつかの設定を使用すれば、 これらのエラー・メッセージをオンまたはオフにすることができます。

大きなデータ・ファイルの書き込み中にプログラムで障害が発生する場合は、 ユーザー ID の最大ファイル・サイズ限界を大きくする必要がある場合もあります。 これは、bashulimit などのシェル・コマンドを使用して 行うことができます。

トレースバックとメモリー・ダンプ

実行時例外の発生前に適切な例外ハンドラーをインストールしている場合、 発生時にメッセージとトレースバック・リストが表示されます。 ハンドラーによっては、コア・ファイルが作成されることがあります。 その後、デバッガーを使用して例外の位置を調べることができます。

プログラムを終了させずにトレースバック・リストを作成する場合は、xl__trbk プロシージャーを 呼び出してください。

IF (X .GT. Y) THEN    ! X > Y indicates that something is wrong.
  PRINT *, 'Error - X should not be greater than Y'
  CALL XL__TRBK       ! Generate a traceback listing.
  X = 0               ! The program continues.
END IF

例外ハンドラーに関する指示については、例外ハンドラーのインストールを、実行時例外の原因の詳細については、 XL Fortran 実行時例外を参照してください。 IBM Copyright 2003