gpt4 book ai didi

cobol - 在 Cobol 中获取当前行号

转载 作者:行者123 更新时间:2023-12-04 13:05:33 24 4
gpt4 key购买 nike

是否可以在Cobol程序中获取并显示当前行号?例如,C 允许通过以下方式进行:

...
printf("Current line = %d\n", __LINE__);
...

最佳答案

简答:否。
没有可移植的 COBOL 方法来执行此操作,尤其是在 __LINE__ 那样的所有地方。

带有潜在替代方案的长答案:
COBOL 2002 添加了用于异常处理的内部函数。使用这些你可以得到最后一个错误发生的位置,哪些检查被激活。
可以通过引发非致命异常来破解某些东西,理想情况下在同一行中使用该函数...来自标准:

The EXCEPTION-LOCATION function returns an alphanumeric character string, part of which is the implementor-defined location of the statement associated with the last exception status.

因此,这可能为您提供编号,因为返回值取决于实现,此外,在撰写本文时,IBM 和MicroFocus 和 Fujitsu 编译器完全不支持该内在功能。GnuCOBOL 实现返回一个以分号分隔的列表,最后一个条目是行号。

即将推出的 COBOL 标准添加了 MODULE-NAME 内在函数 - 但这只会给出名称,而不是行引用。

如果您可以自由选择使用哪种实现,那么在 GnuCOBOL 中添加一个额外的寄存器 COB_SOURCE_LINE/COB_SOURCE_FILE 应该相对容易添加...

如果打算进行某种跟踪:许多编译器都有扩展名READY TRACE/RESET TRACE。使用这两个语句(可能还有编译器指令/选项),它们至少会显示到达的部分和段落的名称,有些还可能显示行号。通常这可以被重定向到一个文件,否则将转到默认错误流。
如果您使用 GnuCOBOL 并使用 -ftrace-all 进行编译,您还可以将其用于具有 COB_TRACE_FORMAT 中指定的自定义格式的行或语句跟踪 [也可以调整在 COBOL 程序中并限于行号]。

关于cobol - 在 Cobol 中获取当前行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69629093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com