cobgetfuncaddr

COBOL プログラム、サブプログラム、入口点に対する関数のポインタを返却します。

構文
#include "cobcall.h"

PFR cobgetfuncaddr(int type, const cobchar_t *name);
パラメータ
type 指定されたプログラムが見つからなかった場合に返却されるものを示します。
ビット 設定 説明
0 0 NULL ポインタが返却されます。
1 エラー関数のアドレスが返却されます。
1 - 31 予約。0 に設定。
name 見つける COBOL プログラムの名前を指定する NULL で終了する文字列。
コメント

この関数は、指定された名前の COBOL プログラムへの関数ポインタを返却します。

指定されたプログラムが既にロードされた COBOL プログラムの入口点である場合、そのプログラムが使用されます。 あるいは、指定された名前が C 関数の場合、そのプログラムが使用されます。 そうでなければ、指定された名前の基本名を持つプログラムが、標準の COBOL 検索順序とパスを使用してディスク上で検索されます。 プログラムの検索順序を変更するには、program_search_order ランタイムチューナを使用します。

エラー関数が返却され (bit 0 が 1 に設定される) 、そのエラー関数が呼び出されると、cobcall() に対するランタイムのエラーが作られます。

この関数は指定された名前のプロフラムをロードするだけで、呼び出しは行いません。 これで、そのプログラムがプレロードされます。 これは、特に、プログラム内で、そのプログラムのメインの入口点ではなく、入口点を呼び出す場合には有用です。

同等の COBOL 構文
set procedure-pointer to entry "name"

次の C プログラムは、COBOL プログラム cobprog を 2 つの引数で呼び出し、エラー条件でコピーします。

PFR cobprog;

if ((cobprog = cobgetfuncaddr(0, "cobprog")) == NULL)
{
    /* エラーの場合 */
}
else
{
    /* ロード済み */
    (*cobprog)(arg1, arg2);    /* ここで呼び出し */
}