cobgetfuncaddr

COBOL プログラム、サブプログラム、エントリ ポイントに対する関数のポインターを返します。
制約事項: この関数は、ネイティブ COBOL でのみサポートされます。

構文:

#include "cobcall.h"

PFR cobgetfuncaddr(int type, const cobchar_t *name);

パラメーター:

type
指定されたプログラムが見つからなかった場合に返されるものを示します。
ビット 説明
0 0 または 1 のいずれかを指定します。
  • 0 の場合は NULL ポインターが返されます。
  • 1 の場合はエラー関数のアドレスが返されます。
1 から 31 予約済み
name
見つける COBOL プログラムの名前を指定する NULL で終了する文字列。

説明:

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

指定された名前がロード済みの COBOL プログラムのエントリ ポイントであれば、そのプログラムが使用されます。指定された名前が C の関数の場合も、その関数を含むプログラムが使用されます。この 2 つに該当しない場合には、指定された名前のベース名を持つプログラムが、標準の COBOL 検索順序とパスを使用してディスク上で検索されます。

エラー関数が返され (ビット 0 を 1 に設定した場合)、そのエラー関数が呼び出されると、cobcall() と同じようにランタイム エラーが生成されます。

この関数は指定された名前のプログラムをロードしますが、呼び出しは行いません。そのため、プログラムをプリロードする手段として使用できます。この機能は、プログラム内のメイン エントリ ポイント以外のエントリ ポイントを呼び出す必要がある場合に役立ちます。

相当する COBOL 構文:

set procedure-pointer to entry "name"

例:

次の C コードは COBOL プログラム cobprog を 2 つの引数を使って呼び出し、その際に発生する可能性があるエラーにも対処します。

PFR cobprog;

if ((cobprog = cobgetfuncaddr(0, "cobprog")) == NULL)
{
    /* Error case */
}
else
{
    /* Loaded */
    (*cobprog)(arg1, arg2);    /* Call it! */
}