5

我的任务是将 COBOL 代码转换为 .NET。有没有可用的转换器?我试图从高层次上理解 COBOL 代码。我无法理解 COBOL 代码。有流程图生成器吗?我很感激任何帮助。

谢谢..

4

6 回答 6

10

将软件系统从一种语言或操作环境迁移到另一种语言或操作环境始终是一项挑战。这里有几点需要考虑:

  • 由于长期存在快速修复和问题解决方法,遗留代码往往结构不佳。当你试图让你的头绕开真正发生的事情时,这确实提高了信噪比。
  • 转换代码会导致进一步的“解构”,以补偿源和目标实现平台之间的不匹配。当您从结构不佳的基础(遗留系统)开始时,最终结果可能完全无法理解。
  • 遗留架构和/或业务流程的文档通常已经过时了,以至于它比无用更糟糕,它实际上可能具有误导性。
  • COBOL 代码的复杂性几乎总是被低估。
  • 许多“功能”将发布到转换后的系统中,这些“功能”最初是为了弥补一次“无法完成”的事情(由于较小的内存、较慢的计算机等)。其中许多现在可能不是问题,您真的不想要它们。
  • 没有明显或直接的方法可以将遗留的流程驱动系统重构为等效的面向对象系统(至少不是以有意义的方式)。

已经有成功的项目将 COBOL 直接迁移到 Java。见纳卡。但是,最终结果只是它的母亲(或其他 COBOL 程序员)可能喜欢的东西请参阅此讨论

一般来说,我会怀疑任何声称将您的 COBOL 遗留系统转换为其他版本的 COBOL(例如 COBOL.net)的产品或工具。为此,您最终仍然得到本质上是 COBOL 系统的东西。如果这种方法是可以接受的,那么您可能需要查看 Micro Focus 的这份白皮书

恕我直言,替换 COBOL 的最佳选择是重新设计您的系统。如果你找到了从你所在的地方到你想成为的地方的灵丹妙药——写一本书,成为一名顾问,赚数百万美元。

很抱歉提供了这样一个否定的答案,但是如果您使用的不是一个微不足道的遗留系统,那么问题将不会是微不足道的。

注意:不要打扰现有系统的流程图。尝试处理流程输入/输出和程序以编程数据转换和流。您需要了解这里的业务功能,而不是它的具体实现。

于 2010-08-30T15:12:30.263 回答
7

Micro Focus 和 Fujitsu 都有与 .NET 兼容的 COBOL 产品。Micro Focus 允许您下载产品试用版,而 Fujitsu NetCOBOL 站点有许多文章和案例研究。

微焦点 http://www.microfocus.com/products/micro-focus-developer/micro-focus-cobol/windows-and-net/micro-focus-visual-cobol.aspx

富士通 http://www.netcobol.com/products/Fujitsu-NetCOBOL-for-.NET/overview

于 2010-08-30T12:48:43.640 回答
3

[注意:我为 Micro Focus 工作]

你好

实际上,使 COBOL 应用程序在 .NET 框架上可用非常简单(与早期响应之一中的声明相反)。Fujitsu 和 Micro Focus 都有 COBOL 编译器,可以创建 ILASM 代码以在 CLR 中执行。

Micro Focus Visual COBOL ( http://www.microfocus.com/visualcobol ) 使得将传统的过程 COBOL 部署为托管代码变得特别容易,完全支持 COBOL 数据类型、文件系统等。它还包括更新的 OO COBOL 语法这消除了语法的大量冗长和复杂性,从而非常容易基于 C# 示例编写 COBOL 代码。它的独特方法还可以轻松使用所有 Visual Studio 工具,例如 IntelliSense。

最初的问题提到了“转换”,我强烈建议不要使用任何需要将源代码转换为其他语言才能在 .NET 环境中使用的方法。所涉及的努力和风险极不可能值得任何收益。相反,将代码保留在 COBOL 中可以维护现有的工作代码,并允许将来选择部署到其他平台上。例如,拥有一组源代码并可以选择将 .NET 作为本机语言部署到 Java 环境中而不更改源代码行如何?

我建议您从上面的链接中获取 Visual COBOL 的试用版,看看如何在不进行任何更改的情况下使用 .NET 中的现有代码。

于 2010-09-06T15:23:53.987 回答
2

这不是一件容易的事。COBOL 对不能很好地与面向对象的 .NET 框架映射的数据类型有基本的想法(例如,在 COBOL 中,所有数据类型都用固定大小的缓冲区表示),特别是组和数组的工作方式不能映射很好的.NET类。

我相信有些 COBOL 编译器实际上可以编译 .NET 字节码,但它们会有自己的运行时库来管理所有这些。可能值得查看其中一个编译器并将遗留代码留在 COBOL 中。

除此之外,可能无法进行逐行翻译。查看更高级别的代码并一次翻译代码块(例如,在过程级别甚至更高级别)。

于 2010-08-30T01:45:52.043 回答
1

有很多机制可以将 COBOL 转换为现代可扩展环境,例如 .NET 或 Java。

第一个是迁移到新环境,通过一些小的修改保存现有的 COBOL 代码(NET Microfocus COBOL);

第二个是迁移到具有 COBOL 语句和结构模拟的新平台。当有一些额外的 NET/Java 库来模拟一些特定的 COBOL 逻辑时:ACCEPT 转到 NETLibrary.Accept 等等。

第三种方法是最有价值的方法,当您迁移到“纯”NET/Java 代码并享受新环境的所有好处时。它可以很容易地在未来进行维护和开发。

但是,这种方法需要独特的专业知识和工具包,在这种情况下,全球市场上只有少数参与者可以为您提供帮助。如果我们谈论的是自动迁移,那么玩家数量会大大减少,不幸的是,您必须为特定的技术和工具(如我们的)付费。

但是,最好将钱投资于现代环境中的未来增长,而不是将钱花在“模拟”旧技术上。

于 2015-01-21T11:22:59.027 回答
0

翻译不是一件容易的事。除了 Micro Focus 和 Fujitsu,还有Raincode,它提供了与 Visual Studio 完美集成的免费版 Cobol。

于 2019-09-06T12:04:46.500 回答