我刚刚查看了 NACA 页面和文档。从他们的文档中:
“生成的 java 使用类似 Cobol 的语法。它与原始 Cobol 语法尽可能接近,当然在 Java 语言的限制范围内。生成的代码看起来不像经典的原生 java,并且从应用程序的角度来看不是面向对象的观点。这是一个设计上的强选择,使 Cobol 开发人员能够顺利迁移到 Java 环境。目标是让编写原始 Cobol 程序的人掌握业务知识。
我没有看到一个例子,但引用给出了结果的强烈味道。它的 COBOL 用 Java 编码。
您始终可以通过简单地用目标语言编写解释器来构建从一种语言到另一种语言的“翻译器”。恕我直言,这是一种绝对糟糕的翻译语言的方式,因为您最终会遇到两全其美的情况:您没有获得新语言的价值,并且您仍然必须了解旧语言才能使结果保持活力。(难怪这东西被称为“转码器”;我以前从未听说过这个词)。
这个噱头的论据是倾销大型机的成本。哪里有证据表明在转换后的程序上工作的成本不会超过节省的成本?我怀疑事实是运营人员通过抛弃大型机降低了成本,他们不在乎维护任务变得更加昂贵。虽然这对于运营人员来说可能是合理的,但对于整个组织来说,这是一个愚蠢的选择。
天堂帮助那些成为这个工具受害者的人。
编辑 2010 年 5 月:我找到了 NACA 输出的示例;他们的测试用例之一
。这绝对是壮丽的JOBOL。他们保留了 COBOL 程序员并且不想雇用任何 Java 程序员,这是一件好事。当您阅读本文时,请确保您记住这是Java代码。
/*
* NacaRTTests - Naca Tests for NacaRT support.
*
* Copyright (c) 2005, 2006, 2007, 2008 Publicitas SA.
* Licensed under GPL (GPL-LICENSE.txt) license.
*/
import idea.onlinePrgEnv.OnlineProgram;
import nacaLib.varEx.*;
public class TestLong extends OnlineProgram
{
DataSection WorkingStorage = declare.workingStorageSection();
Var W3 = declare.level(1).occurs(10).var();
Var V9Comp010 = declare.level(5).pic9(10).var();
Var V9Comp014V4 = declare.level(5).pic9(14, 4).var();
Var VX10 = declare.level(5).picX(10).var();
public void procedureDivision()
{
setAssertActive(true);
move("9876543210", VX10);
assertIfDifferent("9876543210", VX10);
move(VX10, V9Comp010);
long l = V9Comp010.getLong();
assertIfFalse(l == 9876543210L);
multiply(1000, V9Comp010).to(V9Comp014V4);
assertIfFalse(9876543210000L == V9Comp014V4.getLong());
String cs = V9Comp010.toString();
cs = V9Comp014V4.toString();
assertIfDifferent("9876543210000.0000", V9Comp014V4);
inc(V9Comp010);
assertIfFalse(9876543211L == V9Comp010.getLong());
CESM.returnTrans();
}
孩子们:这只能由专业人士完成。不要在家里尝试这个。