ILE COBOL プログラムは、別の HLL プログラムから呼び出すことによって実行することができます。
ILE COBOL CALL ステートメントを使用すれば、ILE COBOL プログラム内で、別の ILE COBOL プログラムを呼び出すことができます。 ILE COBOL 呼び出しが動的プログラム呼び出しである場合、プログラム・オブジェクトは、IN LIBRARY 句を使用してライブラリー修飾が可能です。 たとえば、ライブラリー LIBNAME にあるプログラム・オブジェクト PGMNAME を呼び出すには、次のように指定します。
CALL "PGMNAME" IN LIBRARY "LIBNAME" USING variable1.
IN LIBRARY 句がない場合は、ライブラリー・リスト *LIBL を検索してプログラム・オブジェクトを探します。 詳細については、「WebSphere Development Studio: ILE COBOL 解説書」の『CALL ステートメント』のセクションを参照してください。
ILE C から ILE COBOL プログラムを実行するには、ILE C 関数呼び出しを使用します。 関数の名前は、ILE COBOL プログラムの名前に対応します。 デフォルトでは、この関数呼び出しは静的プロシージャー呼び出しになります。 動的プログラム呼び出しを実行するには、#pragma linkage (PGMNAME, OS) ディレクティブを使用してください。 PGMNAME は、ILE C プログラムから実行したい ILE COBOL プログラムの名前を表します。 #pragma linkage (PGMNAME, OS) ディレクティブを使用することによって PGMNAME が外部プログラムであることを ILE C コンパイラーに知らせたら、ILE C 関数呼び出しによって ILE COBOL プログラムを実行することができます。 詳細については、「WebSphere Development Studio: ILE C/C++ Programmer's Guide」の中の他のプログラムを呼び出すプログラムの作成に関する章を参照してください。
ILE RPG プログラムから ILE COBOL プログラムを実行するには、CALL 命令コードを使用して動的プログラム呼び出しを行うか、 または CALLB 命令コードを使用して静的プロシージャー呼び出しを行ってください。 演算項目 2 の項目としてその名前を指定することによって呼び出し先プログラムを識別します。 詳細については、「WebSphere Development Studio: ILE RPG プログラマーの手引き」のプログラムおよびプロシージャーの呼び出しに関する章を参照してください。
C++ から ILE COBOL プログラムを実行するには、C++ 関数呼び出しを使用します。 関数の名前は、ILE COBOL プログラムの名前に対応します。 C++ が内部的に関数の名前を変更しないようにするには、 すなわち、VisualAge(R) C++ の関数名がマングルされないようにするには、extern キーワードを使用して関数をプロトタイプ化してください。 何も戻さず、2 バイトの 2 進数値を 1 つ取り出す ILE COBOL プロシージャーを呼び出す場合、C++ プロトタイプは次のようになります。
extern "COBOL" void PGMNAME(short int);
同じ COBOL プログラム・オブジェクトを呼び出すには、"OS" のリンケージを指定します。 プロトタイプは次のようになります。
extern "OS" void PGMNAME(short int);
C++ の関数呼び出しにおける "COBOL" のリンケージによって、 関数名がマングルされないようになるだけでなく、ILE COBOL のプロシージャーに渡される引き数が BY REFERENCE で渡されるようになります。 ILE COBOL プロシージャーが BY VALUE パラメーターの指定を予期している場合は、"C" のリンケージを指定する必要があります。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.