Rational Developer for System z
COBOL for Windows バージョン 7.5 言語解説書


USE ステートメント

USE ステートメントのフォーマットには、次のものがあります。

宣言の全般的な情報については、宣言部分を参照してください。

LABEL 宣言は IBM Enterprise COBOL for z/OS でサポートされます。

 

EXCEPTION/ERROR 宣言

EXCEPTION/ERROR 宣言は、標準のシステム・プロシージャーの他に実行される、 入出力例外処理やエラー処理のためのプロシージャーを指定します。

EXCEPTION ワードと ERROR ワードは、 同義語でそれぞれ入れ替えて使用することができます。

フォーマット 1: USE (EXCEPTION ERROR 宣言)
構文図を読む構文図をスキップする>>-USE--+--------+--AFTER--+----------+--+-EXCEPTION-+---------->
        '-GLOBAL-'         '-STANDARD-'  '-ERROR-----'  
 
                        .--------------.    
                        V              |    
>--PROCEDURE--+----+--+---ファイル名-1-+-+---------------------><
              '-ON-'  +-INPUT------------+  
                      +-OUTPUT-----------+  
                      +-I-O--------------+  
                      '-EXTEND-----------'  
 
ファイル名-1
すべてのファイルに対して有効です。このオプションを指定すると、指定したファイルに対してのみプロシージャーが実行されます。ファイル名は、ソート・ファイルやマージ・ファイルを参照することはできません。 どのファイルについても、指定できるのは、 1 つの EXCEPTION/ERROR プロシージャーだけです。したがって、ファイル名の指定によって、 複数の EXCEPTION/ERROR プロシージャーの実行を同時に要求することはできません。

ファイルの名前を指定した USE AFTER EXCEPTION/ERROR 宣言ステートメントは、 ファイルのオープン・モードを指定する宣言ステートメントを優先します。

INPUT
すべてのファイルに対して有効です。このオプションを指定すると、INPUT モードでオープンされた場合、または INPUT モードでオープンされる途中でエラーを起こした場合は、 すべてのファイルに対してプロシージャーが実行されます。
OUTPUT
すべてのファイルに対して有効です。このオプションを指定すると、OUTPUT モードでオープンされた場合、または OUTPUT モードでオープンされる途中でエラーを起こした場合は、 すべてのファイルに対してプロシージャーが実行されます。
I-O
すべての直接アクセス・ファイルに対して有効です。このオプションを指定すると、I-O モードでオープンされた場合、または I-O モードでオープンされる途中でエラーを起こした場合は、 すべてのファイルに対してプロシージャーが実行されます。
EXTEND
すべてのファイルに対して有効です。このオプションを指定すると、EXTEND モードでオープンされた場合、または EXTEND モードでオープンされる途中でエラーを起こした場合は、 すべてのファイルに対してプロシージャーが実行されます。

EXCEPTION/ERROR プロシージャーは、次のいずれかの場合に実行されます。

EXCEPTION/ERROR プロシージャーの実行後、制御は、 入出力制御システム内の呼び出しルーチンに戻されます。入出力状況値が重大な入出力エラーを示していない場合には、 入出力制御システムは、 例外条件を引き起こした実行の入出力ステートメントに続く、 次の実行可能ステートメントに制御を戻します。

READ、WRITE、REWRITE、START、OPEN、CLOSE、 または DELETE の各ステートメントの実行中に入出力エラーが生じたときに、 該当する EXCEPTION/ERROR プロシージャーがアクティブになります。どのような条件がエラーであるかを判別するには、共通の処理機能を参照してください。

宣言型プロシージャーは非宣言型プロシージャーを参照することはできません。

非宣言型プロシージャー内の PERFORM ステートメントは宣言型プロシージャーを参照できます。ただし、それ以外の場合は非宣言型プロシージャーから宣言型プロシージャーを参照することはできません。

すでに呼び出されていて、まだ制御権を持っている USE プロシージャーを実行させるような ステートメントがあっても構いません。ただし、無限ループを起こさないように、 下部に最終的な出口が確実にあるように注意してください。

EXCEPTION/ERROR プロシージャーは、入出力エラーが発生したときに、ファイル状況キーの値を調べるために使用できます。

ネストされたプログラムの優先規則

プログラムが他のプログラムに含まれるときは、特別の優先規則に従います。 これらの規則を適用するときは、最初の修飾宣言のみを実行のために選択する必要があります。宣言を選択するときの優先順位は、次のとおりです。

  1. 修飾条件を引き起こしたステートメントを含んでいるプログラム内のファイル特定の宣言 (つまり、 USE AFTER ERROR ON ファイル名-1 形式の宣言)。
  2. 修飾条件を引き起こしたステートメントを含んでいるプログラム内のモード特定の宣言 (つまり、 USE AFTER ERROR ON INPUT 形式の宣言)。
  3. GLOBAL 句を指定しており、 かつ修飾条件に関して最後に調べられたプログラムを直接的に含んでいるプログラム内にあるファイル特定の宣言。
  4. GLOBAL 句を指定しており、 かつ修飾条件に関して最後に調べられたプログラムを直接的に含んでいるプログラム内にあるモード特定の宣言。

最後に最外部のプログラムが検査されるまで、あるいは修飾する宣言が検索できるまで、ステップ 3 およびステップ 4 を繰り返します。

LABEL 宣言

LABEL 宣言 (USE ステートメントのフォーマット 2) は IBM Enterprise COBOL for z/OS でサポートされます。 COBOL for Windows で LABEL 宣言が検出されると、警告メッセージが出され、宣言は無視されます。

 

DEBUGGING 宣言

デバッグ・セクションは、最外部のプログラムでのみ可能です。ネストされているプログラム内では無効になります。 デバッグ・セクションは、 ネストされたプログラムに含まれるプロシージャーによって起動されることはありません。

デバッグ・セッションは、以下のものは無効です。

SOURCE-COMPUTER 段落の WITH DEBUGGING MODE 文節は、 コンパイルされてオブジェクト・コードに含まれているすべてのデバッグ・セクションとデバッグ行をアクティブにします。 詳細については、付録D. ソース言語のデバッグを参照してください。

WITH DEBUGGING MODE 文節を指定せずにデバッグ・モードを抑止したときは、 すべての USE FOR DEBUGGING 宣言型プロシージャーおよびすべてのデバッグ行は動作を禁止されます。

デバッグ・セクションの中にあるステートメントによって、 デバッグ・セクションの実行が自動的に引き起こされることはありません。

 

フォーマット 3: USE (DEBUGGING 宣言)
構文図を読む構文図をスキップする>>-USE--+-----+--DEBUGGING--+----+------------------------------>
        '-FOR-'             '-ON-'  
 
     .--------------------.    
     V                    |    
>--+---プロシージャー名-1-+-+----------------------------------><
   '-ALL PROCEDURES---------'  
 
USE FOR DEBUGGING
すべてのデバッグ用ステートメントを 1 つのセクションにまとめて、 DECLARATIVES ヘッダーのすぐ後に書き込まなければなりません。

USE FOR DEBUGGING 文そのものを除き、デバッグ・プロシージャー内では非宣言型プロシージャーを参照することはできません。

プロシージャー名-1
デバッグ・セッションの中で定義することはできません。

デバッグ宣言の実行 (表 56) は、有効な各オプションについて、プログラム実行のどの時点で USE FOR DEBUGGING プロシージャーが実行されるかを示したものです。

いかなるプロシージャー名も、1 つの USE FOR DEBUGGING 文の中にしか現れてはならず、 その文の中で一度しか使用できません。 すべてのプロシージャーは、最外部のプログラムの中に記述しなければなりません。

ALL PROCEDURES
プロシージャー名-1 は、USE FOR DEBUGGING 文の中で指定することはできません。ALL PROCEDURES 句は、プログラムの中で一度だけ指定できます。最外部プログラムに置かれたプロシージャーだけが、 デバッグ・セクションの実行を起動できます。

表 56. デバッグ宣言の実行
USE FOR DEBUGGINGオペランド USE FOR DEBUGGING プロシージャーが直ちに実行される
プロシージャー名-1 指定されたプロシージャーの実行前。

指定したプロシージャーを参照している ALTER ステートメントの実行後。

ALL PROCEDURES 最外部プログラム内のすべての非デバッグ・プロシージャーのそれぞれの実行前。

最外部プログラム内のすべての ALTER ステートメント (宣言型プロシージャーの中の ALTER ステートメントは除く) の実行後。


ご利用条件 | フィードバック

Copyright IBM Corporation 1996, 2008.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)