-1

我想使用 opencobol 编译器在 ubuntu linux 中运行我的 cobol-db2 程序,请解释我使用 opencobol 在 linux 中运行我的程序的过程。

4

1 回答 1

1

如果这违反了 Stackoverflow 上的任何年龄限制规则,请原谅;

请参阅http://opencobol.add1tocobol.com/#how-does-the-opencobol-compiler-work

也许http://opencobol.add1tocobol.com/#does-opencobol-support-any-sql-databases

链接到数据库的示例。

编辑:按照 mbinette 的建议,而不是简单的链接

简而言之,OpenCOBOL 是一个多阶段编译器。

  • 预处理源文本。cobc -E生成后处理文本到标准输出并停止
  • 翻译成C.cobc -C生成.c源代码文件并停止
  • 使用本机 C 编译器转换为汇编程序。cobc -S生成.s 汇编源并停止
  • 生成对象。cobc -c将生成 .o 目标文件并停止
  • 建造。cobc -xcobc -mcobc -b用于可执行文件、模块(.so 或 DLL),最后 build 用于从多个命令行输入创建动态共享对象。

OpenCOBOL 擅长共享库,并且通过使用 C 应用程序二进制接口,可以使用 COBOL CALL动词动态加载大多数(如果不是全部).so(或 DLL)符号。

CALL "DB2-CONNECT"
    USING
        BY REFERENCE "database name"
        BY CONTENT credentials
        BY VALUE control-bits
    RETURNING pointer-to-handle
    ON EXCEPTION
        DISPLAY "Can't find DB2-CONNECT, use -ldb2 with cobc" END-DISPLAY
END-CALL

我编写了上面的调用框架,因为我手头没有 DB2 库或文档

要编译一个程序以使用 DB2 服务,您需要使用类似

cobc -x myprogram.cob -ldb2 -L/path/to/DB2lib

或者,更有可能在更大的应用程序中,类似于

cobc -b myprogram.cob hisprogram.cob herprogram.cob
export COB_LIBRARY_PATH=/path/to/development/libraries
export COB_PRE_LOAD=db2-dev:other-dev-libs
cobcrun myprogram

有关更多详细信息,请参阅常见问题解答,希望永远隐藏在上面的链接中。

指出从1.1 开始的 OpenCOBOL 不支持 EXEC 语法。DB2 EXEC 预处理器可能会或可能不会生成适用于 OpenCOBOL 的 COBOL。有人告诉我,Oracle Pro*COBOL EXEC END-EXEC 预编译器生成 COBOL 源代码,该代码使用 OpenCOBOL 编译以链接到 Oracle SQL。

于 2012-11-25T07:03:34.320 回答