Enterprise Cobol 5.2 调试器行数超出

Posted

技术标签:

【中文标题】Enterprise Cobol 5.2 调试器行数超出【英文标题】:Enterprise Cobol 5.2 Debugger Linenumbers exceeded 【发布时间】:2017-12-05 13:25:36 【问题描述】:

我有一项“了不起”的任务,那就是维护一个不是我编写的遗留程序。 Cobol 程序在 z/OS 2.2 环境中运行,并使用 IBM Enterprise Cobol 5.2 编译。对于调试,我想使用选项CBL LIST, TEST (EJPD, SOURCE) 编译程序。可惜我的源代码有999999多行,所以编译的时候出错了。 有没有办法绕过行数的限制,还是只有分割程序的方法?

【问题讨论】:

我知道维护不是您自己编写的代码是一种常见的做法。当我问这些问题时,我非常生气和沮丧。对此感到抱歉。 【参考方案1】:

至少从 1980 年代中期发布的 VS COBOL II 开始就存在 999999 行数限制。它是 Enterprise COBOL 6.3 中的 also present,这是本次更新之前编译器之前的最新版本。

也许有人在欺骗您,向您提供无法编译的源代码。这是一个编译器限制,正如@SaggingRufus 所指出的,解决方案是将程序分成多个模块。

我认为一百万行以上的源代码是难以理解的。

您可以使用的其他机制包括评估代码、查找无缘无故跨越多行的语句...

MOVE
A
TO
B

...只是愚蠢的。

顺便说一句,维护不是您编写的代码是工作的一部分。过去,让新员工通过一段时间来维护现有代码库以让他们熟悉商店标准等是很正常的。

【讨论】:

看来这个限制还在,至少 EC V6.2 中还存在【参考方案2】:

根据 JES 版本,我相信您可以使用 WARNING 参数,看起来像这样

//JOB10 JOB 1234,ME,LINES=(999999,WARNING)

这告诉系统即使达到行限制也会继续,并且只发出警告。

或者,您可以将此编译列表输出到文件而不是 SYSOUT。那么线路限制将不适用

另外请记住,在 JES spool 中有这么多行并不是一件好事,所以我建议使用文件路径。

【讨论】:

您提到的JCL 选项会影响作业输出量。我的问题不是作业输出的数量,而是带有CBL LIST, TEST (EJPD, SOURCE) 的编译器显然不能处理超过 999999 行的源代码...... 如果是这种情况,那么您将需要遍历逻辑并找出可以放入另一个程序的内容并调用该程序。要么就是这样,要么可能有编译器更新可以解决这个问题 非常感谢。我担心只剩下这个解决方案...... 等一下,SO 大型机社区中活跃的一些人比我拥有更多的知识。他们可能有解决方案。

以上是关于Enterprise Cobol 5.2 调试器行数超出的主要内容,如果未能解决你的问题,请参考以下文章

安装redhat linux enterprise 5.2版本的oracle时,无法本机登录,但是能远程ssh登录的问题,如何解决?

COBOL 程序不会在我的报告中输出详细信息行

如何在 Android Enterprise Work Profile 中调试应用程序

SonarCOBOL插件执行错误

Cobol xml 解析出现异常

从 Windows 7 Enterprise 到 Samsung Galaxy Tab A 在 Chrome 开发人员工具中进行远程调试时未检测到设备