示例: COBOL 程序调用 C++ 函数

下面的示例显示了一个 COBOL 程序,该程序通过使用传递参数的 CALL 语句调用一个 C++ 函数 BY REFERENCE

该示例说明了以下概念:
  • CALL 语句不会指明被调用程序是用 COBOL 还是 C++ 编写的。
  • 必须在调用非 void C++ 函数的 CALL 语句上声明函数返回值。
  • COBOL 数据类型必须映射到适当的 C++ 数据类型。
  • 必须声明 C++ 函数 extern "C"
  • COBOL 参数传递到 BY REFERENCE。 C++ 函数通过使用引用参数来接收这些参数。

COBOL 程序 driver


cbl pgmname(mixed)
Identification Division.
Program-Id. "driver".
Data division.
Working-storage section.
01 A pic 9(8) binary value 11111.
01 B pic 9(8) binary value 22222.
01 R pic 9(8) binary.
Procedure Division.
    Display "Hello World, from COBOL!"
    Call "sub" using by reference A B
      returning R
    Display R
    Stop Run.

C++ 函数 sub:


#include <iostream.h>
extern "C" long sub(long& A, long& B) {
  cout << "Hello from C++" << endl;
  return A + B;
}

输出:


Hello World, from COBOL!
Hello from C++
00033333

相关参考
CALL 语句 (COBOL for Linux® on x86 Language Reference)