LINKAGE TYPE 句

IBM Extension
IBM Extension
LINKAGE TYPE 句を使用して、CANCEL が対象とするプログラムのタイプを指定します。 対象として考えられるのは、プログラム・オブジェクト (*PGM) または ILE プロシージャーです。
環境名-1
CANCEL ステートメントが影響するプログラムのタイプです。 環境名-1 は以下のものとして定義できます。
PGM
プログラム・オブジェクト (*PGM)
PRC
ILE プロシージャー
PROGRAM
プログラム・オブジェクト (*PGM) が取り消されます。
PROCEDURE
ILE プロシージャーが取り消されます。

CANCEL ステートメントに LINKAGE TYPE 文節が指定されていない場合、 取り消せるプログラムのタイプは SPECIAL-NAMES 段落の LINKAGE TYPE 句、CRTCBLMOD または CRTBNDCBL コマンドの LINKLIT パラメーターのいずれかを指定することにより、変更できます。

End of IBM Extension
End of IBM Extension

呼び出し先サブプログラムに CANCEL ステートメントを実行することにより、このサブプログラムとプログラムとの間の論理的な結びつきは終了します。 サブプログラムが記述する外部データ・レコードにあるデータ項目の内容は、サブプログラムが取り消されても変更されません。 このサブプログラムを指定している実行単位中のプログラムが CALL ステートメントを後に実行する場合には、 このサブプログラムには初期状態で入ります。

CANCEL ステートメントは、オープンしているすべての INTERNAL ファイルをクローズします。

呼び出し先サブプログラムは、以下のいずれかの方法で取り消すことができます。
  • そのサブプログラムを CANCEL ステートメントのオペランドとして参照する
  • そのサブプログラムがメンバーとなっている実行単位を終了する (これは同じ実行単位における STOP RUN、あるいはその実行単位の主プログラムからの GOBACK により実行できます。)
  • 呼び出し先サブプログラムに INITIAL 属性が付いている場合、そのサブプログラムで EXIT PROGRAM ステートメントを実行する
  • 呼び出し先サブプログラムに INITIAL 属性が付いている場合、そのサブプログラムで GOBACK ステートメントを実行する

CANCEL ステートメントは、指定されたプログラムだけで実行されるものであって、 取り消されたプログラムによって呼び出し先プログラムでは実行されません。

呼び出し先サブプログラムの中に CANCEL ステートメントが入っていてもかまいません。 また、呼び出し先サブプログラムには、 その呼び出し側プログラムや、呼び出し階層でそれ自体より上位にある他のプログラムを、直接または間接的に取り消す CANCEL ステートメントがあってはなりません。 呼び出し先サブプログラムがその呼び出し側プログラムを取り消そうとすると、 そのサブプログラムにある CANCEL ステートメントは無視されます。

CANCEL ステートメントに指定するプログラムは、 一度呼び出されたが、まだ制御が呼び出し側プログラムへ戻されていないプログラムを参照することができません。 例えば、
A が B を呼び出し、B が C を呼び出す       (A が制御を受け取った時点で、
                                C を取り消すことができる)
A が B を呼び出し、A が C を呼び出す       (C が制御を受け取った時点で、
                                B を取り消すことができる)

実行単位の中で呼び出されていないプログラムの名前を CANCEL ステートメントで指定したり、 あるいは呼び出されはしたがすでに取り消されているプログラムの名前を指定した CANCEL ステートメントを実行しても、何も行われません。 どちらの場合も、制御は次のステートメントへ移ります。

プロシージャーおよびプログラム・オブジェクトの取り消し について詳しくは、「IBM® Rational® Development Studio for i: ILE COBOL プログラマーの手引き」を参照してください。