CALL id を使用すると、ネストされた ILE COBOL プログラムを呼び出したり、 プログラム・オブジェクトを呼び出したりすることができます (id はプロシージャー・ポインターではありません)。 ID の内容によって、ネストされたプログラムかプログラム・オブジェクトのどちらかを呼び出すのかが実行時に決められます。 ID の内容が可視のネストされたプログラムの名前と一致する場合、呼び出しはネストされたプログラムになります。 それ以外の場合は、ID の内容で指定される名前のプログラム・オブジェクトに対して動的プログラム呼び出しが実行されます。
CALL id で指定された IN LIBRARY 句は、呼び出しがプログラム・オブジェクトになるように強制します。
CALL ステートメントで最初に ID を使用するときに、CALL id (およびそれに関連する IN LIBRARY 項目) とオブジェクトを関連付けるオープン・ポインターが設定されます。
あるプログラムを指す ID を使用して呼び出しを実行した後、 そのプログラムを削除または名前変更する場合、CANCEL ステートメントを使用することによって、その ID に関連付けられているオープン・ポインターをヌルにする必要があります。 これにより、次に ID を使用してプログラム・オブジェクトを呼び出した場合、関連したオープン・ポインターが再び設定されます。
次の例は、CANCEL ステートメントを ID に適用する方法を示すものです。
MOVE "ABCD" TO IDENT-1. CALL IDENT-1. CANCEL IDENT-1.
CANCEL ステートメントを直接リテラル "ABCD" に適用する場合、IDENT-1 に関連づけられるオープン・ポインターはヌルにしない でください。 その代わりに、CALL ステートメントで IDENT-1 を使用することにより、プログラム ABCD の呼び出しを続行することができます。
CALL id の値を変更し、その新しい値を使って呼び出しを実行すると、 オープン・ポインターの値も変更されます。 オープン・ポインターの値は、それに関連した IN LIBRARY 項目によっても影響を受けます。 それ以前の IDENT-1 への呼び出しとは異なるライブラリーを CALL に指定すると、オープン・ポインターはリセットされます。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.