2

我正在转换为 Microfocus 的编译器编写的一组 COBOL 程序,以便与 GnuCobol 一起使用。到目前为止,我已经取得了一定的成功,只需要更改一些特定于微焦点的日期命令,以及使用 GnuCobol 的-std=mf参数。

我正在使用来自www.arnoldtrembley.com/GnuCOBOL.htm的预构建版本

成功编译后运行某个文件时遇到此错误:

libcob: module '»' not found

在OpenCOBOLIDE中玩了一圈后,我发现违规行是

 CALL X"AF" USING SET-BIT-PAIRS
                               USER-KEY-CONTROL

我能做些什么来解决这个问题?

4

1 回答 1

2

您需要重新编码该部分。GnuCOBOL 仅支持少数编号的系统支持例程。x"91"、x"E4"、x"E5"、x"F4" 和 x"F5"。x"AF" 尚未在内置系统库例程列表中。甚至受支持的也不包括对所有子功能的处理。

由于 x"AF" 与屏幕相关(至少从我看到的一个文档页面来看),您可能只需弄清楚要发送到终端的转义码并使用 DISPLAY 而不是 CALL 手动完成该部分。

在不知道调用什么 x"AF" 子功能的情况下(无论在 SET-BIT-PAIRS 中是什么),不可能提出一个特定的 VT100 序列来建议尝试。如果它只是子功能 18,那么 DISPLAY 一个没有前进的字符可能就足够了。子功能 22 只是意味着敲响终端铃声,这可以通过发出 Ctrl-G 来完成。等等。

如果您好奇,请运行cobc --list-system(或只是查看包含在您使用的预构建包中的 GnuCOBOL 手册)以查看 GnuCOBOL 支持哪些库存系统库调用。

如果您喜欢冒险,您可以随意查看编译器源代码树,只需通过将 CALL 编号链接到 C 函数、使用新条目扩展 libcob/system.def 并重建 GnuCOBOL 来更改 libcob 以支持您拥有的代码从源头。

于 2017-10-24T05:00:52.623 回答