関数ポインターを使用して C から COBOL のプログラム、サブプログラム、またはエントリ ポイントを呼び出します。
制約事項: この関数は、ネイティブ COBOL でのみサポートされます。
構文:
#include "cobcall.h"
cobrtncode_t cobcallpp (PFR rtn, int argc,
cobchar_t **argv);
パラメーター:
var |
呼び出す COBOL のプログラム、サブプログラム、またはエントリ ポイントへの関数ポインター |
argc |
argv で渡される引数の数 |
argv |
COBOL プログラムへ渡される引数 |
相当する COBOL 構文:
call "name" [using ...] [returning ...]
例:
COBOL エントリ ポイント cobep を 2 つの文字列引数で C 関数から呼び出すには、次のいずれかの方法を使用します。
PFR rtn = cobgetfuncaddr("cobep");
cobchar_t *argv[2];
argv[0] = arg1;
argv[1] = arg2;
cobcallpp(rtn, 2, argv);
または
cobep(arg1, arg2);
説明:
この関数は、関数ポインターと、argv で渡される引数を使用して、COBOL のプログラム、サブプログラム、またはエントリ ポイントを呼び出すために使用されます。各パラメーターは参照渡しされます。
rtn を初期化するには、COBOL エントリ ポイントを直接参照するか (エントリ ポイントがアプリケーションにリンクされている場合)、cobgetfuncaddr() を使用します。後者の場合、cobcallpp() が呼び出されたときではなく cobgetfuncaddr() が呼び出されたときにプログラムが検索されます。
cobcallpp() の結果は、ANSI '74 規格に定義されている COBOL 型の呼び出しになり、その動作も COBOL から COBOL エントリ ポイントを呼び出した場合と同様です。
COBOL エントリ ポイントに引数が必要ない場合は、argc は 0 で argv は NULL です。