CANCEL(取消し)文

CANCEL(取消し)文は、参照するプログラムを次回に呼んだときに必ず初期状態にあるようにする。

一般形式

構文規則

  1. 定数-1は、文字定数とする。

  2. 一意名-1は、英数字データ項目を参照する。

一般規則

  1. 定数-1または一意名-1によって参照されるデータ項目の内容は、取り消す対象のプログラムを指さなければならない。その名前は取消し対象のプログラムのプログラム名段落に記されているプログラム名でなければならない(見出し部の章のプログラム名段落節、特に大文字と小文字の区別に関する記述を参照)。別の方法として、その名前に取消し対象のプログラムの実行プログラム用のコードが収められているファイルを指定してもよい。CANCEL文の中で同じファイルを指す別の名前を指定した場合にどのような結果になるかは、オペレーティング・システムによって異なる。前に呼ばれたプログラム、プログラム・ファイル名、あるいは登録集ファイル中のプログラムと指定された名前の照合方法の詳細については、COBOLシステムのマニュアルを参照。

    その名前がENTRY文に含まれている入口名を指している場合、結果はどうなるかわからない。

  2. 明示的または暗黙的なCANCEL文が実行された後では、そのプログラムとそれが属する実行単位との論理関係はなくなる。明示的または暗黙的なCANCEL文の対象であったプログラムが、同じ実行単位の中で後からまた呼ばれたときには、そのプログラムは初期状態にある。翻訳集団の概念の章の関数、メソッド、またはプログラムの状態節を参照。

  3. 他のプログラム中のCANCEL文の中に指定されたプログラムは、そのプログラムから呼べるものとする。COBOL言語の概念名前の適用範囲および CALL (呼出し)文節を参照。

  4. 明示的または暗黙的なCANCEL文が実行されると、その対象となったプログラム中に含まれるプログラムもすべて取り消される。その結果は、取り消されたプログラムの中に含まれる各プログラムに対して、それらが現れる順番と逆の順番で、有効なCANCEL文を実行したことに等しい。

  5. CANCEL文中に指定したプログラムは、呼ばれたがまだEXIT PROGRAM文

    またはGOBACK

    を実行していないプログラムを、直接的にも間接的にも指してはならない。

  6. 取り消されたプログラムとの論理関係は、その後でそのプログラムを対象にしてCALL文を実行することによってだけ、成り立つ。

  7. 呼ばれたプログラムは、CANCEL文の作用対象として指定すること、または対象とするプログラムが属する実行単位が終了すること、

    または、呼ばれたプログラムが初期属性をもつ場合には、その中でEXIT PROGRAM文を実行すること

    により、取り消される。

  8. 実行単位の中でまだ呼ばれていないプログラム、呼ばれたが取消し済みのプログラム、またはCOBOL以外のプログラムを指定して、明示的または暗黙的なCANCEL文を実行しても、何の措置もとられない。 制御はCANCEL文の後ろに続く、次の実行可能文に移される。

  9. プログラム内に記述されている外部データ・レコード中のデータ項目の内容は、そのプログラムが取り消されても変わらない。

  10. 明示的または暗黙的なCANCEL文の実行中に、暗黙のCLOSE文が実行される。具体的には、CANCEL文の対象プログラム中の内部ファイル結合子に関連する、開かれているファイルがすべて閉じられる。これらのファイルに関連するUSE手続きがあっても、実行されない。

  11. CANCEL文は、副プログラムを初期状態に戻すかそのままの状態で残すかを決める。CANCEL文は、必ずしも、取り消された副プログラムが記憶されていた領域を解放するとは限らない。しかし、オペレーティングシステムの中には取り消された副プログラムが記憶されていた領域を解放するものが多い。その副プログラムの外部ファイルおよび外部データ領域は、CANCEL文によって解放されることはない。