我想使用 opencobol 编译器在 ubuntu linux 中运行我的 cobol-db2 程序,请解释我使用 opencobol 在 linux 中运行我的程序的过程。
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 -x或cobc -m或cobc -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。