Rational Developer for System z
PL/I for Windows, Version 7.6, プログラミング・ガイド

エラー処理の概念

PL/I プログラムをデバッグするときは、以下に示すエラー処理の概念を十分に理解しておく必要があります。条件処理の詳細については、「PL/I 言語解説書」を参照してください。

システム機能

オペレーティング・システムには、エラー処理機能があります。さまざまな状態でマシン割り込みが発生し、システム監視プログラムに入る可能性があります。PL/I 制御プログラムは、指定されたルーチンを使って、このような割り込みの後に行われる処置を定義できます。あるいは PL/I 制御プログラムは、PL/I プログラマーが指定した ON ユニットに制御を渡します。

言語機能

PL/I 言語およびその実行環境は、オペレーティング・システムが提供するエラー処理機能をさらに拡張します。PL/I の割り込みが発生する状態は多数あり、中には、エラー処理ではなく通常のプログラム・フローの制御として状態が使用される場合もあります (ENDFILE など)。ON ユニットは、ほとんどの割り込みの後で制御を受け取ることができます。

ON ユニットが割り込み後に制御を受け取るように記述しない場合、以下の処理が可能です。

ほとんどの PL/I 条件は、プログラム・ロジックまたは提供されたデータの中にエラーがあるために発生します。ただし、エラーとは関連がない場合もあります。このような条件として ENDFILE などがありますが、これらはプログラム実行中いつでも発生する可能性があるので、予測することは困難です。

PL/I には、システム・メッセージと SNAP メッセージの両方があります。

システム・メッセージ
ON ユニットに SNAP と SYSTEM の両方が含まれる場合、結果の PL/I メッセージとしては基本的に PL/I SYSTEM メッセージが出力され、以下に示す 3 行のいずれか (または組み合わせ) がそれに続きます。
  From offset xxx in a BEGIN block

  From offset xxx in procedure xxx

  From offset xxx in a condition_name ON-unit

これらのメッセージは、メイン・プロシージャーへのトレースバックに必要な回数だけ繰り返されます。

SNAP メッセージ
ON ユニットに SNAP のみが含まれる場合、結果の PL/I メッセージの先頭部分は、次のようになります。
  Condition_name condition was raised
  at offset xxx in procedure xxx.

このメッセージの後続部分は、SNAP SYSTEM メッセージと同様です。

オフセットからステートメント番号を判断する

オフセット番号をステートメント番号に変換するには、以下のステップを実行します。

条件処理の組み込み関数

PL/I には、条件処理の組み込み関数と疑似変数があります。これらを使用すれば、割り込みに関連したさまざまなフィールドを検査し、特定のケースでは、エラーを引き起こすフィールドの内容を訂正することができます。

このような組み込み関数には、以下のものがあります。

DATAFIELD
ONCHAR
ONCODE
ONCONDCOND
ONCONDID
ONCOUNT
ONFILE
ONGSOURCE
ONKEY
ONLOC
ONSOURCE
ONWCHAR
ONWSOURCE

これらの条件処理組み込み関数および疑似変数の詳細については、「PL/I 言語解説書」を参照してください。

修飾条件および非修飾条件の ON ユニット

非修飾条件の ON ユニットはプログラム中の任意の時点で 1 つしか確立できませんが、修飾条件の ON ユニットは複数確立できます。例えば、異なるファイルについて修飾された ENDFILE 条件を処理する場合は、ON ユニットを確立させて、それらのファイルのいずれかについて ENDFILE の発生を一意的に処理することができます。


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)