首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.NET读取COBOL代码以生成调用图

使用.NET读取COBOL代码以生成调用图
EN

Stack Overflow用户
提问于 2016-11-23 00:28:06
回答 1查看 409关注 0票数 0

我正在做一个项目,让COBOL自动生成一个类图。我正在使用.NET控制台应用程序进行开发。我需要帮助跟踪过程名称,在下面的示例中使用了perform语句。

代码语言:javascript
复制
    **Z-POST-COPYRIGHT.
       move 0 to RETURN-CODE
       perform Z-WRITE-FILE**

如何跟踪调用过程'Z-write-file‘的过程名称'Z-Post-COPYRIGHT’?就COBOL而言,我能想到的唯一想法是通过缩进,因为过程名总是缩进的。理想情况下,在数据库中,代码应该跟踪单词“perform”之后的过程名称和调用它的过程(在本例中是Z-POST-COPYRIGHT)。

EN

回答 1

Stack Overflow用户

发布于 2016-11-23 04:12:35

我假设你想在没有外部工具的情况下“自己”完成这项工作(更快的方法可以在最后找到)。

你首先要“知道”你的来源:

选项是用哪个编译器编译的(获取此compiler)

  • which options

的手册

然后,您必须准备源代码:

  • include copybooks (执行给定的REPLACING规则,如果有的话)如果源代码是自由格式的引用格式:如果您在第7列中找到注释,请检查最后一行和当前行的内容,并更改所有注释的结果(可能只有固定格式引用格式或类似格式的第7列中的<
  • >d17- >和\ )或类似(扩展名如"variable“format /”

“format",...”

  • REPLACE“format”,...存在,可能只有内联注释-如果是自由格式的引用格式,否则可能是内联注释*>或编译器特定的扩展(如|) -根据您想要进行的进一步重新工程,提取它们并至少使用行号引用

存储它们可能是一个好主意

最后,您可以使用以下规则跟踪过程名称:

  • 返回到最后一个分隔符句号(有更多的规则,但是规则“至少一个换行符,另一个句号,一个空格,一个逗号或分号”[我从来没有在实际代码中看到过最后两个,但它是可能的]应该是enough)
  • check如果这个分隔符句号和下一个
  • 之间只有一个单词如果这个单词不是保留的COBOL字(这取决于你的编译器)它很可能是一个过程名

从这里开始检查输出,然后用实际的误报或缺失条目对规则进行精细评分。

如果你想做的不仅仅是提取PERFORMGO TO的过程名(至少应该检查PERFROM ... THRU的源代码),那么这可能会有很多工作要做……

使用外部工具实现更快的方法:

  • 在完整的源代码上运行COBOL编译器,并告诉它只做准备工作-这样你就已经解决了大的第二点如果你有以下选择:告诉编译器或外部工具创建一个符号表/交叉引用-这将告诉你一个过程在哪一行及其名称(你可以简单地通过比较这一行找到正确的过程)

只需注意:您可能想要检查GnuCOBOL (formerly OpenCOBOL)以准备和/或生成符号表/交叉引用,和/或检查printcbl以获取完全外部工具,执行准备和/或cobxref以生成完整的交叉引用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40746961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档