有没有免费的(指价格)COBOL代码流程图生成器?

3
我从未阅读过COBOL代码,但被委托将旧的COBOL代码重写为新语言。 是否有任何免费或免费试用的软件包可以为COBOL程序生成流程图?
我看过"Visustin"和"Code Visual to Flowchart"。
Visustin在演示版本中会隐藏部分代码并进行随机旋转,这导致演示不太准确。
我无法正确使用Code Visual Flow Chart来处理我们的代码。
您知道其他我可以尝试的软件包吗?

我将为你默哀,因为你被委托将旧的COBOL代码改写成一种新语言。 - Vivin Paliath
看一下输出并复制结果,个人认为!请注意标点符号(.)。 - James Westgate
哈哈!!!我真的很感激你们的评论。 - btelles
6个回答

5

我并不羡慕你。大多数情况下,手动跟踪COBOL程序相当简单(尽管很繁琐)。我曾经处于同样的境地,并最终选择手动完成。学习一门新语言从来没有坏处,所以这并不是完全无用。

查找“PROCEDURE DIVISION”短语并从那里开始。跟随任何遇到的“PERFORM”语句以跟踪逻辑。如果您不会自杀,您将成为一个更好的人。


1
感谢支持。我需要查看成千上万行代码,虽然我很愿意学习COBOL,但现在更多的是时间和直接商业回报的问题。您是否知道像上面提到的流程生成器? - btelles
抱歉,我从未使用或见过任何流程生成器,更不用说免费的了。不过我理解ROI问题,COBOL通常存在时间很长且工作很稳定,以至于很少觉得值得花时间和精力去替换它。当然,一旦所有的COBOL程序员都离开,我们就有麻烦了。 - brydgesk
3
COBOL并不是一门复杂的语言,我认为学习它比自动翻译成源代码然后尝试阅读流程图更快。有用的提示:如果你觉得你看到的语言结构太愚蠢而不存在,必须有更深层意义,并且你正在看COBOL程序,那么你是错的。 - David Thornley

2
我用Python为COBOL编写了一个简单的流程图生成器,它使用Graphviz。它非常简单,生成一个.jpg格式的图表,适合我的需求,但可能对你不同。 无论如何,如果你想要的话,你可以在这里发送邮件给我 http://www.contactify.com/a6148,我会给你发我的小脚本。如果你在Linux上,你几乎肯定已经安装了Python,在Windows上,你需要与yapgvb模块一起安装。 让我知道!再见

2
为什么不直接将你的代码发布到一个公共代码片段网站上,并提供链接呢? - NealB
嘿,你是对的!这里是 http://codepad.org/0sXIwrp2 - synasius
我忘了告诉你,我的脚本没有捕捉到对外部例程的调用,因为在我们的COBOL软件中,每个调用都在标签下面..所以我只捕捉所有标签;这对我的目的起作用。 - synasius
它能正确处理PERFORM语句吗?即使在面对PERFORM B时,也能从一个段落A跳转到另一个B吗?COBOL的控制流程比你想象的要复杂得多。 - Ira Baxter
是的,它可以处理PERFORM语句!但如果您在LabelC下有“PERFORM LabelA THROUGH LabelB”,则只会从LabelC到LabelA获得链接。这是因为在我们的软件中,只有当LabelB是退出标签时,才会使用PERFORM THROUGH语句。正如我之前所说,这个脚本是专门针对我们的软件而设计的,但我认为它可以很容易地修改,以便最符合您的需求,因为Python是一种易于使用的语言。 - synasius
Synasius,我和你一样。我已经安装了带有yapgvb模块的Python。我试图在命令提示符C:\Python27\Python raw.py test.CBL下运行你的文件,但是我收到了“NotImplemented error”的错误信息。我对Python一无所知。你能否发布更多运行此文件的指示?感谢你的帮助。 - nav100

2
COBOL比BNF符号更古老,不能用任何LR(k)类型的语法来描述。大多数流行的词法分析/语法分析策略对这种语言无效(至少不是在很晚和使用粗鄙语言之后)。因此,高质量的COBOL解析器很难找到。那些存在的解析器通常要花费很多钱。
如果没有强大、免费的解析器,你很难找到免费(指言论自由,忘掉啤酒)的COBOL图表工具。我所遇到的一切都很弱(我在这里非常慷慨)。
建立自己的工具可能是一个令人望而生畏的任务。看看 COBOL语法。COBOL是一门庞大的语言,准备做一些严肃的工作吧。
首先进行一些严肃的数学计算:需要转换多少代码?摆脱COBOL值得多少?如果不能做出合理的财务论证,那就继续使用当前的COBOL应用程序。
如果您可以提出继续进行的理由,那么您可以尝试将OpenCobol作为代码分析/转换系统的起点。但是,您需要熟悉C和COBOL才能使其正常工作。如果您使用IBM COBOL方言,并且可以访问IBM大型机编译器,则可以查看ADATA编译器选项,这将为您的程序提供AST。这些都是一些可能的起点。
另一种选择是获取商业COBOL转换/翻新产品。我个人没有太多经验,无法推荐任何特定的产品。
如果学习COBOL以进行转换的成本不划算,那么就接受现有的COBOL应用程序。您不会是第一个得出这个结论的人!

关于 COBOL 无法被任何 LR(k) 描述的说法是错误的,尤其是如果你愿意做与 GNU 的 Bison 解析 C++ 相似的事情。即使没有这些黑科技,使用 GLR 解析器也相对容易解析 COBOL(我已经用这种方式构建了一个 IBM 企业级解析器)。我同意,你不太可能免费找到一个好的解析器。 - Ira Baxter
@Ira Baxter。很好的观点,GLR解析器确实解决了这个问题,我考虑的是经典LR解析器,在那里K的合理值很小。现在,你编写IBM Enterprise COBOL的GLR解析器花了多长时间?有很多熬夜或污言秽语吗? - NealB
我们正在构建一个名为DMS的解析/转换工具包,网址为http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html。我们为DMS构建了一个GLR的解析器生成系统,并将其用于许多语言定义中,因此其成本已经摊销,而且相当合理。关于IBM企业COBOL,我们的GLR解析器就像是直接使用Bison一样。是的,有很多深夜和不堪入耳的语言,但这与解析器无关。相反,这与IBM文件描述企业COBOL细节的不精确有关。这才是真正的痛苦所在。 - Ira Baxter
教训:你真的不想为一次性工具构建自己的COBOL解析器。而且,问题并不在于解析技术,尽管如果你使用较弱的技术,它会增加你的麻烦。但这不是主要问题的根源。 - Ira Baxter

1

没有我所知道的可靠的COBOL流程图工具(40年经验)。

与普遍观点相反,COBOL程序可能是非常复杂的事情。

COBOL的基本要素很简单,但正确使用和逻辑并不简单。


这里有一个可靠的COBOL流程图制作工具:(请参见示例COBOL控制流程图)在此页面上:http://www.semanticdesigns.com/Products/DMS/FlowAnalysis.html。(它不是免费的)。 - Ira Baxter

1

我也在找这样的工具。

我正在编写的 COBOL 程序,但项目经理希望能看到程序的图片,尽管这些程序已经被编写、测试和部署!

Visustin 工具看起来不错,但分析某些程序需要相当长的时间。可能是因为它们非常大。最小的程序有 3500 多行。

另外,我正在使用 COBOL74 对 UNiSYS 主机进行开发,Visustin 无法理解 DMSII 的一些(任何) COBOL74 扩展。

无论如何,时间紧迫,所以我们刚刚订购了一份副本。希望它对那些不能读文字,需要看图表的人足够好用。


1
IBM有一款名为Asset Analyzer的产品(现在可能被市场推广为Rational Websphere Asset Analyzer或类似名称)。
它可以分析您整个Cobol源代码库,并帮助您进行重构,同时提供大量的程序理解报告。它实际上构建了一个网站,以便您可以根据需要以高或低级别来浏览程序逻辑。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接