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

Programming languages 您将COBOL程序移植到哪种语言?为什么?,programming-languages,porting,cobol,Programming Languages,Porting,Cobol,当选择一种语言来移植COBOL程序时,您会选择哪种语言?为什么?我不是在寻找答案“因为我熟悉X语言” 我正在寻找能够很好地映射到COBOL设计的语言特性 更新:< /强>程序将运行GUMIT到实用程序、数据处理、屏幕等。 < P>,你应该考虑COBOL程序通常会得到什么输入。 COBOL设计用于处理大量固定宽度格式的文本作为输入,并以几乎相同的方式输出。对我来说,这听起来更像是一个ETL过程 因此,我不会简单地将COBOL程序移植到另一种语言;我会将它移植到合适的ETL技术,比如SQLServ

当选择一种语言来移植COBOL程序时,您会选择哪种语言?为什么?我不是在寻找答案“因为我熟悉X语言”

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


<强>更新:< /强>程序将运行GUMIT到实用程序、数据处理、屏幕等。

< P>,你应该考虑COBOL程序通常会得到什么输入。 COBOL设计用于处理大量固定宽度格式的文本作为输入,并以几乎相同的方式输出。对我来说,这听起来更像是一个ETL过程


因此,我不会简单地将COBOL程序移植到另一种语言;我会将它移植到合适的ETL技术,比如SQLServerIntegrationServices(SSIS),或者至少是它的PreDecesorDTS-SQL数据转换服务。SSIS意味着使用VB.NET(至少在SQL Server 2005中是这样),但这不应该是一个问题。

我个人会根据程序的预期设计而不是当前的实现来执行此决定。但是,如果您想要一条直线作为测线端口,我可能会说c/c++。

我会将它们移植到。。。嗯。。。COBOL。是的,就是这样。COBOL

对不起,我无法抗拒

说真的,现在已经有了针对当前平台的COBOL编译器,除非我们对为什么必须移植代码有更多的了解,否则我们可能无法提供帮助

运行它的平台是否过时?管理层只是在推动更“现代”的解决方案吗?你必须把东西从Systemz移动到Windows吗

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

  • C
  • 不带类的C++语言
  • Java,尽管你不能避免类,除非你有一个大的单件
  • 帕斯卡语(用一种“死”的语言交换另一种)
  • 甚至Python、Perl等都可以工作

也许不是立即看一种新的语言,你可以考虑把你的一些代码转换成一个当代的框架,比如.NET——你可能会发现一个很好的中间解决方案,直到你准备好去完成整个HOG。p>


有一些用于.NET的Cobol编译器,如富士通的。

我曾经参与将一些Cobol东西移植到C(1989年左右)。所讨论的Cobol是用于监控防盗警报、火灾警报等的代码。它是一种适合于更实时的环境的程序。每分钟对这些数以百万计的客户现场设备进行多次轮询,等等。寻找“与COBOL设计很好匹配的语言中的功能”忽略了一个事实,即有很多COBOL程序忽略了COBOL的设计。

我对COBOL知之甚少,但我不认为现在有一种语言是它的直接超集(因此,直接将COBOL映射到该语言并不容易)。我看到了几个问题:

  • 内置对十进制算术的支持-这排除了任何没有运算符重载的现代语言

  • 更好地支持结构化记录——可以像在C中一样使用struct/union组合,但我认为它有时会使标识符非常长(至少对于我所看到的程序)

  • Goto语句—如果没有它,在重写程序时必须完全分析程序的逻辑


  • 可能还有其他不容易映射的特性。

    我会保留COBOL核心,但会围绕边缘展开

    提供一个名为EnterpriseServer的工具,它允许COBOL与web服务交互

    如果您有一个COBOL程序a和另一个COBOL程序B,并且a通过接口部分调用B,那么该工具允许您将B的接口部分作为web服务公开

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

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

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

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

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

      • 第一个问题是,为什么要移植COBOL?COBOL是一种功能强大、由来已久的语言,它在生产中运行工资单、会计等的代码行可能比任何其他语言都多

        最简单的端口是Synergy DBL。这是一个高度可移植的VM风格的DIBOL(面向数字业务的语言)更新

        DIBOL使用了BASIC、FORTRAN和COBOL中所有的好代码,去掉了大部分的坏代码

        如果您遵循上面的链接,您将看到他们有GUI、.NET和其他增强工具。只需确保您将要运行的任何目标操作系统都有一个VM

        IBM大型机COBOL大量使用CICS、TCAM、IDMS等,这将是一个非常困难的端口

        OpenVMS COBOL使用DECForms甚至FMS将是一个没有屏幕的艰难端口