USE ステートメントのフォーマットには、次のものがあります。
宣言の全般的な情報については、宣言部分を参照してください。
LABEL 宣言は IBM Enterprise COBOL for z/OS でサポートされます。
EXCEPTION/ERROR 宣言は、標準のシステム・プロシージャーの他に実行される、 入出力例外処理やエラー処理のためのプロシージャーを指定します。
EXCEPTION ワードと ERROR ワードは、 同義語でそれぞれ入れ替えて使用することができます。
ファイルの名前を指定した USE AFTER EXCEPTION/ERROR 宣言ステートメントは、 ファイルのオープン・モードを指定する宣言ステートメントを優先します。
EXCEPTION/ERROR プロシージャーは、次のいずれかの場合に実行されます。
EXCEPTION/ERROR プロシージャーの実行後、制御は、 入出力制御システム内の呼び出しルーチンに戻されます。入出力状況値が重大な入出力エラーを示していない場合には、 入出力制御システムは、 例外条件を引き起こした実行の入出力ステートメントに続く、 次の実行可能ステートメントに制御を戻します。
READ、WRITE、REWRITE、START、OPEN、CLOSE、 または DELETE の各ステートメントの実行中に入出力エラーが生じたときに、 該当する EXCEPTION/ERROR プロシージャーがアクティブになります。どのような条件がエラーであるかを判別するには、共通の処理機能を参照してください。
宣言型プロシージャーは非宣言型プロシージャーを参照することはできません。
非宣言型プロシージャー内の PERFORM ステートメントは宣言型プロシージャーを参照できます。ただし、それ以外の場合は非宣言型プロシージャーから宣言型プロシージャーを参照することはできません。
すでに呼び出されていて、まだ制御権を持っている USE プロシージャーを実行させるような ステートメントがあっても構いません。ただし、無限ループを起こさないように、 下部に最終的な出口が確実にあるように注意してください。
EXCEPTION/ERROR プロシージャーは、入出力エラーが発生したときに、ファイル状況キーの値を調べるために使用できます。
プログラムが他のプログラムに含まれるときは、特別の優先規則に従います。 これらの規則を適用するときは、最初の修飾宣言のみを実行のために選択する必要があります。宣言を選択するときの優先順位は、次のとおりです。
最後に最外部のプログラムが検査されるまで、あるいは修飾する宣言が検索できるまで、ステップ 3 およびステップ 4 を繰り返します。
LABEL 宣言 (USE ステートメントのフォーマット 2) は IBM Enterprise COBOL for z/OS でサポートされます。 COBOL for Windows で LABEL 宣言が検出されると、警告メッセージが出され、宣言は無視されます。
デバッグ・セクションは、最外部のプログラムでのみ可能です。ネストされているプログラム内では無効になります。 デバッグ・セクションは、 ネストされたプログラムに含まれるプロシージャーによって起動されることはありません。
デバッグ・セッションは、以下のものは無効です。
SOURCE-COMPUTER 段落の WITH DEBUGGING MODE 文節は、 コンパイルされてオブジェクト・コードに含まれているすべてのデバッグ・セクションとデバッグ行をアクティブにします。 詳細については、付録D. ソース言語のデバッグを参照してください。
WITH DEBUGGING MODE 文節を指定せずにデバッグ・モードを抑止したときは、 すべての USE FOR DEBUGGING 宣言型プロシージャーおよびすべてのデバッグ行は動作を禁止されます。
デバッグ・セクションの中にあるステートメントによって、 デバッグ・セクションの実行が自動的に引き起こされることはありません。
USE FOR DEBUGGING 文そのものを除き、デバッグ・プロシージャー内では非宣言型プロシージャーを参照することはできません。
デバッグ宣言の実行 (表 56) は、有効な各オプションについて、プログラム実行のどの時点で USE FOR DEBUGGING プロシージャーが実行されるかを示したものです。
いかなるプロシージャー名も、1 つの USE FOR DEBUGGING 文の中にしか現れてはならず、 その文の中で一度しか使用できません。 すべてのプロシージャーは、最外部のプログラムの中に記述しなければなりません。
| USE FOR DEBUGGINGオペランド | USE FOR DEBUGGING プロシージャーが直ちに実行される |
|---|---|
| プロシージャー名-1 | 指定されたプロシージャーの実行前。
指定したプロシージャーを参照している ALTER ステートメントの実行後。 |
| ALL PROCEDURES | 最外部プログラム内のすべての非デバッグ・プロシージャーのそれぞれの実行前。
最外部プログラム内のすべての ALTER ステートメント (宣言型プロシージャーの中の ALTER ステートメントは除く) の実行後。 |