別の ILE COBOL プログラムからの取り消し

ILE COBOL では、CANCEL ステートメントを使用してサブプログラムを取り消します。 CANCEL ステートメントを実行するには、サブプログラムはその取り消しを行うプログラムと同じ活動化グループになければなりません。

呼び出し先サブプログラムに CANCEL ステートメントを実行することにより、このサブプログラムとプログラムとの間の論理的接続はなくなります。 サブプログラムによって記述されている EXTERNAL データ・レコードと EXTERNAL ファイルのデータ項目の内容は、サブプログラムが取り消されても変更されません。 同じサブプログラム名の実行単位の中で、後ほど CALL ステートメントが実行された場合、 このサブプログラムは初期状態になります。

呼び出し先サブプログラムに CANCEL ステートメントを含めることができます。 しかし、それを呼び出すプログラムまたは呼び出し階層で上位にあるプログラムを直接または間接に取り消す CANCEL ステートメントを含めることはできません。 呼び出し先サブプログラムがそれを呼び出すプログラムを取り消そうとしても、 そのサブプログラムの CANCEL ステートメントは無視されます。

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.

注:
複数の ILE COBOL プログラムを含むプログラム・オブジェクトを取り消す場合は、 そのプログラム・オブジェクトの PEP に関連した ILE COBOL プログラムだけが取り消されます。

CANCEL ステートメントの詳細については、「WebSphere Development Studio: ILE COBOL 解説書」を参照してください。