您将COBOL程序移植到哪种语言?为什么?

时间:2009-04-21 05:18:15

标签: programming-languages porting cobol

选择使用您选择的语言移植COBOL程序的语言以及为什么?我不是在寻找答案“因为我熟悉语言X”。

我正在寻找能够很好地映射到COBOL设计的语言的功能。

更新:程序会运行gammit到实用程序,数据处理,屏幕等。

9 个答案:

答案 0 :(得分:7)

我会把它们移到......嗯...... COBOL。对,就是那样。 COBOL。

抱歉,无法抗拒。

说真的,有适用于当前平台的COBOL编译器,除非我们更多地了解代码 的移植原因,否则我们可能无法提供帮助。

它运行的平台是否已过时?管理层是否只是在寻求更“现代”的解决方案?您是否需要将内容从System z移动到Windows(唉!)?

COBOL(最纯粹的形式,不是OO-COBOL垃圾)主要是一种简单的程序语言(尽管有ReportWriter),因此可以很好地转换为任何其他程序语言:

  • 下进行。
  • 没有类的C ++
  • Java,虽然你不能避免上课,除非你有一个很大的单身人士。
  • Pascal(将一种'死'语言换成另一种语言)。
  • 即使是Python,也可以使Perl等人工作。

答案 1 :(得分:4)

好吧,你应该考虑COBOL程序通常会得到什么输入。

COBOL旨在处理大量固定宽度格式的文本作为输入,以大致相同的方式输出。对我而言,这听起来更像是一个ETL过程。

所以我不会将COBOL程序简化为另一种语言;我将它移植到合适的ETL技术,如SQL Server Integration Services(SSIS)或至少其前身DTS - SQL数据转换服务。 SSIS意味着使用VB.NET(至少在SQL Server 2005中),但这应该不是问题。

答案 2 :(得分:2)

我不太了解COBOL,但我认为目前的语言不是它的直接超集(因此,将COBOL直接映射到语言并不容易)。我看到几个问题:

  1. 内置支持十进制算术 - 这可以排除任何现代语言而无需运算符重载。

  2. 更好地支持结构化记录 - 可以像在C中一样使用struct / union组合,但我认为它有时会使标识符很长(至少对于我见过的程序)。

  3. Goto语句 - 没有它,人们在重写时必须完全分析程序的逻辑。

  4. 可能还有其他一些不易映射的功能。

答案 3 :(得分:1)

我个人根据计划的预期设计而不是目前的实施来执行此决定。但是,如果你想要一个直接的线到线端口,我可能会说c / c ++。

答案 4 :(得分:1)

或许不是立即查看新语言,您可以考虑将一些代码转换为.Net等现代框架 - 您可能会发现这是一个很好的中间解决方案,直到您准备好全面了解。

有一些适用于.NET的Cobol编译器,例如Fujitsu的NetCOBOL

答案 5 :(得分:1)

我曾经涉及将一些COBOL东西移植到C(1989年左右)。有问题的COBOL是用于监控防盗警报,火警等的代码。这是一种适合更实时的程序一种环境。每分钟对这些大量客户现场设备进行多次轮询,等等。查看“使用能够很好地映射到COBOL设计的语言的功能”,忽略了有很多COBOL程序忽略了COBOL的设计这一事实。

答案 6 :(得分:1)

我会保留COBOL核心但扩展边缘。

Microfocus提供了一个名为Enterprise Server的工具,它允许COBOL与Web服务进行交互。

如果您有COBOL程序A和另一个COBOL程序B和A通过接口部分调用B,该工具允许您将B的接口部分公开为Web服务。

对于程序A,然后生成客户端代理,A现在可以通过Web服务调用B.

当然,因为B现在有一个Web服务,任何其他类型的程序(命令行,Windows应用程序,Java,ASP等)现在也可以调用它。

此外,他们还有一个名为COBOL.NET的产品,它在Visual Studio中运行并将COBOL转换为MSIL。这意味着您可以链接任何.NET组件。

因此,方法是保留COBOL核心,但通过Web服务进行接口,并在任何符合CLR的语言(C#,VB等)中进行新的开发。

答案 7 :(得分:1)

  • 我不得不说你不应该移植COBOL。
    • 如果您的意思是重写,那么请选择一种语言。我建议用一个web界面,java或.Net来重写。
    • 如果代码需要像现在一样运行 ,那么任何“移植”转换只会造成伤害。
  • 如果您因某种原因必须更换平台,可以在另一个平台上使用COBOL。
  • 根据我的经验,最有效的方法是尝试将组件或服务彼此分离,或者单独转换小块,或者只是用首选语言编写新代码,保持COBOL在后端运行。

答案 8 :(得分:1)

首先必须将COBOL移植到原因? COBOL是一种功能强大的历史语言,很可能在生产中运行工资单,会计等的代码行数比任何其他语言都多。

最痛苦的端口是Synergy DBL。这是DIBOL(数字业务导向语言)的高度可移植的VM样式更新。

http://www.synergex.com/synergy-dbl/

DIBOL使用了BASIC,FORTRAN和COBOL的所有优点,遗漏了大部分不良内容。

如果您按照上述链接,您将看到他们有GUI,.NET和其他增强工具。只需确定您将运行的目标操作系统有一个VM。

IBM大型机COBOL大量使用CICS,TCAM,IDMS等,对于其他任何事情来说都是一个非常艰难的端口。

OpenVMS COBOL使用DECForms甚至可能是FMS将是一个没有屏幕处理包的艰难端口。来自这些商店的非常旧的COBOL将大量使用操作系统提供的系统服务和运行时库程序,这些程序在大多数其他平台上都无法使用。您还必须阅读逻辑并找出如何在您的目标上实现某种类型的关闭。

对于大多数大型机和中档COBOL,你会发现你不只是移植COBOL。旧的COBOL将使用大量的系统服务。