cobcall

C から COBOL プログラム、サブプログラムやエントリ ポイントを呼び出します。
制約事項: この関数は、ネイティブ COBOL でのみサポートされます。

構文:

#include "cobcall.h"

cobrtncode_t cobcall (const cobchar_t *name, int argc, 
                      cobchar_t **argv);

パラメーター:

name 呼び出される COBOL プログラムの名前を指定した NULL で終了する文字列
argc argv で渡される引数の数
argv COBOL プログラムへ渡される引数

説明:

この関数は、argv で渡される引数で、指定された名前の COBOL プログラムを呼び出すのに使用されます。各パラメーターは参照渡しされます。

cobcall() の結果は、ANSI '74 規格に定義されている COBOL 型の呼び出しになり、その動作も COBOL から COBOL エントリ ポイントを呼び出した場合と同様です。

この関数は、C 構文で C プログラムから直接 COBOL プログラムを呼び出すのと同じです。

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

  • If the sub-program is already loaded, or is statically linked, it is located and the search ends.
  • On UNIX platforms, if you are calling shared objects (.so files) without a specific path, the LD_LIBRARY_PATH or LIBPATH environment variable is searched.
  • If COBPATH is set, the list of paths in the variable are searched, in order; if COBPATH is not set, the current directory is searched.
  • On Windows platforms, if you are calling dynamic link libraries (.dll files) without a specific path, the COBPATH environment variable is searched.
  • The path of the calling program is searched.

指定された名前に合致するプログラムが見つからないとランタイム エラーが発生します。 

COBOL エントリ ポイントに引数が必要ない場合は、argc は 0 で argv は NULL です。

相当する COBOL 構文:

call "name" [using ...] [returning ...]

例:

COBOL エントリ ポイント cobep を 2 つの文字列引数で C 関数から呼び出すには、次のいずれかの方法を使用します。

cobchar_t *argv[2];
argv[0] = arg1;
argv[1] = arg2;
cobcall("cobep", 2, argv);

または

cobep(arg1, arg2);