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 つに該当しない場合には、指定された名前のベース名を持つプログラムがディスク上で検索されます。検索順序は次のとおりです。 

  • サブプログラムがすでにロードされている場合、または静的にリンクされている場合は、サブプログラムが検索され、検索が終了します。
  • UNIX プラットフォームでは、共有オブジェクト (.so ファイル) を特定のパスなしで呼び出している場合、LD_LIBRARY_PATH または LIBPATH 環境変数が検索されます。
  • COBPATH が設定されている場合、変数内のパスのリストが順番に検索されます。COBPATH が設定されていない場合、現在のディレクトリが検索されます。
  • Windows プラットフォームでは、ダイナミック リンク ライブラリ (.dll ファイル) を特定のパスなしで呼び出している場合、COBPATH 環境変数が検索されます。
  • 呼び出し元のプログラムのパスが検索されます。

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

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);