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


CANCEL ステートメント

CANCEL ステートメントは、参照されるサブプログラムが次に呼び出されるとき、初期状態になるようにします。

フォーマット
構文図を読む構文図をスキップする           .----------------.  
           V                |  
>>-CANCEL----+-ID-1-------+-+----------------------------------><
             '-リテラル-1-'    
 
ID-1リテラル-1
リテラル-1 は英数字リテラルでなければなりません。ID-1 は、その値をプログラム名にできる英数字、英字、またはゾーン 10 進数データ項目でなければなりません。プログラム名の形成の規則は、PGMNAME コンパイラー・オプションによって異なります。詳しくは、PROGRAM-ID 段落のプログラム名の説明、および「COBOL for Windows プログラミング・ガイド」の PGMNAME コンパイラー・オプションの説明を参照してください。

ID-1 をウィンドウ化日付フィールドにすることはできません。

リテラル-1 または ID-1 の内容は、 関連する CALL ステートメント内に指定される ID のリテラルまたは内容と同じでなければなりません。

CANCEL ステートメントには、クラスまたはメソッドの名前を指定しないでください。

呼び出されたサブプログラムに対して CANCEL ステートメントを実行した後、そのサブプログラムは、当該プログラムに対して論理的関連を失います。サブプログラムによって記述された外部データ・レコード中のデータ項目の内容は、 サブプログラムが取り消されても変更されることはありません。 実行単位内でいずれかのプログラムが、同じサブプログラムを指名して CALL ステートメントを実行した場合、そのサブプログラムは、その初期状態で実行されます。

CANCEL ステートメントが実行されるとき、その CANCEL ステートメントに参照されるプログラムに入っている他のすべてのプログラムも、取り消されます。個別にコンパイルされたプログラム内のプログラムが 現れる順番とは逆の順序で、それらの各包含プログラムに対して、 有効な CANCEL ステートメントが実行された場合も、その結果は同じになります。

CANCEL ステートメントは、明示的な CANCEL ステートメントに指定されたプログラム内の、 内部ファイル結合子と関連するすべてのオープン・ファイルをクローズします。それらのファイルと関連する USE プロシージャーは実行されません。

以下のいずれかの方法で、呼び出されたサブプログラムを取り消すことができます。

次のどちらかのプログラムを指定した CANCEL ステートメントが実行されたときは、 何の処置も取られません。

マルチスレッド環境の場合、プログラムは、スレッド上のアクティブなプログラムを 指定して CANCEL ステートメントを実行することはできません。 指定するプログラムは、完全に非アクティブでなければなりません。

呼び出されるサブプログラムには、CANCEL ステートメントを入れることができます。 ただし、呼び出されるサブプログラムは、 呼び出し側プログラム自体を直接または間接に取り消す CANCEL ステートメントを実行することはできません。 または、呼び出しの階層内でそのプログラム自体より上位にある他のプログラムを取り消す CANCEL ステートメントを実行することもできません。 それを行うと、実行単位が終了します。

CANCEL ステートメント内で指名されるプログラムは、呼び出されてもまだ EXIT PROGRAM または GOBACK ステートメントを実行していないプログラムでなければなりません。

ただし、CANCEL ステートメントを実行するプログラムが呼び出し階層において取り消すプログラムより上位または等しいレベルであれば、 取り消し側プログラムは呼び出していないプログラムを取り消すことができます。以下に例を示します。

A calls B and B calls C    (When A receives control, it can cancel C.)
A calls B and A calls C    (When C receives control, it can cancel B.)

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

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