选择使用您选择的语言移植COBOL程序的语言以及为什么?我不是在寻找答案“因为我熟悉语言X”。
我正在寻找能够很好地映射到COBOL设计的语言的功能。
更新:程序会运行gammit到实用程序,数据处理,屏幕等。
答案 0 :(得分:7)
我会把它们移到......嗯...... COBOL。对,就是那样。 COBOL。
抱歉,无法抗拒。
说真的,有适用于当前平台的COBOL编译器,除非我们更多地了解代码 的移植原因,否则我们可能无法提供帮助。
它运行的平台是否已过时?管理层是否只是在寻求更“现代”的解决方案?您是否需要将内容从System z移动到Windows(唉!)?
COBOL(最纯粹的形式,不是OO-COBOL垃圾)主要是一种简单的程序语言(尽管有ReportWriter),因此可以很好地转换为任何其他程序语言:
答案 1 :(得分:4)
好吧,你应该考虑COBOL程序通常会得到什么输入。
COBOL旨在处理大量固定宽度格式的文本作为输入,以大致相同的方式输出。对我而言,这听起来更像是一个ETL过程。
所以我不会将COBOL程序简化为另一种语言;我将它移植到合适的ETL技术,如SQL Server Integration Services(SSIS)或至少其前身DTS - SQL数据转换服务。 SSIS意味着使用VB.NET(至少在SQL Server 2005中),但这应该不是问题。
答案 2 :(得分:2)
我不太了解COBOL,但我认为目前的语言不是它的直接超集(因此,将COBOL直接映射到语言并不容易)。我看到几个问题:
内置支持十进制算术 - 这可以排除任何现代语言而无需运算符重载。
更好地支持结构化记录 - 可以像在C中一样使用struct / union组合,但我认为它有时会使标识符很长(至少对于我见过的程序)。
Goto语句 - 没有它,人们在重写时必须完全分析程序的逻辑。
可能还有其他一些不易映射的功能。
答案 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)
答案 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将使用大量的系统服务。