18.2.1 取り消し対象のプログラム
実行中のプログラムを取り消すには,CANCEL文を使用します。
(1) 取り消しの対象に指定できるプログラム
CANCEL文で取り消しの対象に指定できるプログラムは,CANCEL文を実行したプログラムから呼び出せるプログラムだけです。
(例)
-
プログラムAは,自身が呼び出せるプログラムB,およびプログラムCに対してCANCEL文を実行できます。
-
プログラムB,プログラムCがお互いを呼び出せる場合,直接呼び出したプログラムでなくても,プログラムBからプログラムCに対して,プログラムCからプログラムBに対して,それぞれCANCEL文を実行できます。
-
プログラムDは,プログラムCの内側のプログラムなので,プログラムAからプログラムDに対してCANCEL文を実行できません。
(2) 取り消しの実行順序
CANCEL文を実行したとき,CANCEL文に指定されたプログラム中に含まれるすべてのプログラムも取り消されます。このとき,プログラムが取り消される順番は,翻訳単位のプログラム中に現れた順序とは逆順に,含まれる各プログラムに対して正しいCANCEL文を実行した場合と同じです。
(例)
プログラムTEST01から「CANCEL 'A'.」を実行すると,プログラムAに含まれるすべての内側のプログラムに対してもCANCEL文が実行されたものとして扱われます。
(3) CANCEL文に指定できないプログラム
CANCEL文を実行する場合,すでにほかのプログラムから呼び出されていて,まだEXIT PROGRAM文が実行されていないプログラムを,直接または間接に参照してはいけません。このような実行中のプログラムを参照した場合,実行時エラーとなります。
(例)
プログラムCから,まだ実行中のプログラムBをCANCEL文で取り消そうとした場合,実行時エラーとなります。