我正在做一个项目,让COBOL自动生成一个类图。我正在使用.NET控制台应用程序进行开发。我需要帮助跟踪过程名称,在下面的示例中使用了perform语句。
**Z-POST-COPYRIGHT.
move 0 to RETURN-CODE
perform Z-WRITE-FILE**如何跟踪调用过程'Z-write-file‘的过程名称'Z-Post-COPYRIGHT’?就COBOL而言,我能想到的唯一想法是通过缩进,因为过程名总是缩进的。理想情况下,在数据库中,代码应该跟踪单词“perform”之后的过程名称和调用它的过程(在本例中是Z-POST-COPYRIGHT)。
发布于 2016-11-23 04:12:35
我假设你想在没有外部工具的情况下“自己”完成这项工作(更快的方法可以在最后找到)。
你首先要“知道”你的来源:
选项是用哪个编译器编译的(获取此compiler)
的手册
然后,您必须准备源代码:
REPLACING规则,如果有的话)如果源代码是自由格式的引用格式:如果您在第7列中找到注释,请检查最后一行和当前行的内容,并更改所有注释的结果(可能只有固定格式引用格式或类似格式的第7列中的<\ )或类似(扩展名如"variable“format /”“format",...”
REPLACE“format”,...存在,可能只有内联注释-如果是自由格式的引用格式,否则可能是内联注释*>或编译器特定的扩展(如|) -根据您想要进行的进一步重新工程,提取它们并至少使用行号引用存储它们可能是一个好主意
最后,您可以使用以下规则跟踪过程名称:
从这里开始检查输出,然后用实际的误报或缺失条目对规则进行精细评分。
如果你想做的不仅仅是提取PERFORM和GO TO的过程名(至少应该检查PERFROM ... THRU的源代码),那么这可能会有很多工作要做……
使用外部工具实现更快的方法:
只需注意:您可能想要检查GnuCOBOL (formerly OpenCOBOL)以准备和/或生成符号表/交叉引用,和/或检查printcbl以获取完全外部工具,执行准备和/或cobxref以生成完整的交叉引用。
https://stackoverflow.com/questions/40746961
复制相似问题