2010-09-15 33 views
1

一位中年人为他在大约25年前工作的公司开发了软件... 他已经将所有内容写入COBOL中......我花了数小时才了解系统的工作原理! 那么该公司的服务器太旧(8 MB的硬盘),我认为... 他没有使用数据库,但存储在文件中的数据... 他告诉我,他想升级系统到一些新的..旧系统使用AIX操作系统.... 他想知道aix或linux是否更好,我认为linux的分布可能会更好,因为有很多免费的Linux软件...我不知道什么是兼容的对于AIX ... 该公司是一些类型的仓库... 他已经开发了一个网站,供客户登录并看到一些信息..该网站是在远程服务器,他手动复制并粘贴数据库在远程服务器...旧的Cobol软件和新的操作系统

他想将功能添加到w eb网站的下订单... 但他不愿意更新旧的COBOL代码,并至少使用一个数据库...

公司的人使用服务器的程序通过telnet服务器使用某种telnet客户端...

我的问题用于教育目的... 有什么方法可以重用COBOL代码并创建一个Web界面? 或者,如果它是可能的创建图形用户界面程序,同时使用cobol相同的代码... 因为我知道,编写代码在不同的地方做同样的事情不是不错的想法.. 我的意思是商业逻辑存在在多个地方...

+0

他希望你将系统升级到新的东西,但他不希望你改变cobol代码或使用数据库? – SteveCav 2010-09-16 00:17:08

+0

@Steve:确实......但对于分阶段进行迁移的想法有一些优点。首先在商品HW + OS平台上引导旧系统,然后再担心重构到更现代的体系结构。现在离开我的草坪吧! :-) – 2010-09-16 00:29:03

+0

其实他并不想让我做任何事情,他不确定。我们只是在说..因为他已经开发了公司里的所有东西,他不希望任何人使用代码等。但他不想使用数据库或其他语言...但是,在互联网上搜索发现COBOL仍然使用,即使使用.NET。 – GorillaApe 2010-09-16 09:09:35

回答

2

跑了!

至少直到您的客户开始使用 一个真正的数据库系统来实现订单输入系统。 所有的交易处理系统都需要 以确保ACID属性 为每个交易维护。这是为什么真正的数据处理系统使用数据库的基本原因之一 。不使用数据库管理系统是 一个确定的灾难公式(迟早)。

可以将COBOL连接到Web服务或GUI类型的应用程序吗?答案 肯定是的,这不是一个不常见的做法。根据COBOL应用程序的结构, 可能是一个或多或少痛苦的过程。如果它具有Client/Server类型结构,那么您只需用Web/GUI 组件替换客户端组件,插入适当的中间件以连接到服务器,并且您已完成很多工作。 如果COBOL应用程序是作为 big ball of mud开发的,那么您就是 。由于您的客户自己在独立平台上开发了自己的系统,因此我愿意赌大量的“泥球”模型。为最坏的情况做好准备。

如果这个应用程序只花了“小时”而不是“几个月”来理解它听起来不像 那么复杂 - 您可能会发现从头开始重建它是一个可行的选择。但是, 不要低估这样做的工作!

至于升级AIX系统或切换到Linux,我不能帮你。

这里有一对夫妇在AIX资源COBOL,你可能需要查看:

如果你选择去了Linux的路线我会建议您检查out:

您的客户表示在微焦点COBOL兴趣。 MicroFocus可能是大型机市场之外最大的COBOL供应商 。他们有很好的声誉。 MicroFocus also supports web development on Linux platforms 并且倾向于对IBM COBOL方言有很好的支持,如果从AIX迁移,这可能是一个考虑因素。

我的建议的最后一句话是,直到你的客户端醒来的 以下事实逃跑:

  • 数据和交易需要使用支持ACID真正的DBMS进行管理。
  • 将基于网络的订单输入系统添加到“泥球”不是一个周末项目。它可能需要 一个完整的重构,并可能对现有系统的完全重新编写

顺便说一句...如果你想保留与此人有合作关系,不叫他的系统 一个“球泥“,即使它是一个。他建立了这个东西,可能 认为这是他的一个孩子。

+0

顺便说一句...如果你想保持与这个人的工作关系,不要称他的系统为“即使它是一个泥球“。他建立了这个东西,可能把它看作是他的一个孩子。 这是真的!呵呵多数民众赞成在他认为的方式 我认为,交易处理对他来说不是一个问题25 ...所以... – GorillaApe 2010-09-16 19:03:02

+0

只是历史。我用编译器级别的一些修改使用开放式cobol。程序名称' - 仍然做 - 看起来像cli442.约300程序和更多的名称3 char字符串和数字没有任何意义。对于数据库我使用了一个蹩脚的ISAM实现有许多错误,但无法找到更好的东西,但它工作正常,只有在并发有一些问题(一些由我修复)。对于订单的网络接口,我们与其他公司达成协议,发送一个扁平的文本文件(php脚本执行cobol编)当我提到XML格式,他们看起来我喜欢WTF大家并且尖叫NO。 – GorillaApe 2011-09-28 23:16:32

0

安装TinyCOBOL的Linux服务器可能是一个选项。我会继续 密切关注The Daily WTF,在听到这个故事的其余部分的希望......

+0

是的,实际上他对microfocus cobol感兴趣..我不知道这是否适用于linux,aix ... 反正我的问题是关于重用代码......作为应用程序服务器不存在或Web服务等。换句话说,如果可以使用旧的cobol代码创建一个新的分布式系统,而不是用别的东西代替它 – GorillaApe 2010-09-16 09:15:02

0

嗯是的,这是他认为的方式...这个系统是他的孩子25年!然后把钱花到公司上。下个星期我会看到他的一个节目的来源... 其实他做了大约5个不同的节目...

你说它可以接口,问题是如何??? 使用什么?现在该系统通过telnet工作... 如果解决方案是在接口应用程序上创建telnet连接,并以这种方式获取数据...我认为这完全是不良的...

+0

忘记telnet。 Web标准应用程序 需要在正确管理和安全的Web服务器上运行。你需要 找到一个商业的虚拟主机服务。整个 应用程序应该运行(您的本地AIX或Linux框 然后成为开发/测试平台)。其他解决方案 比您所寻找的 更加复杂和昂贵。 – NealB 2010-09-16 20:35:09

0

我已经使用了一种可能的方法是保持COBOL核心,但扩大边缘。这符合“他希望将功能添加到下订单的网站”。

Microfocus提供了一个名为Enterprise Server的工具,它允许COBOL与Web服务交互。 (它可以在Linux和AIX上运行)。

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

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

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

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

所以方法是保持通过Web服务的COBOL核心,但界面和做新发展,任何符合CLR语言(C#,VB等)

附:要将使用big endian的COBOL系统转移到使用little endian的系统,反之亦然!

1

AIX vs Linux - Linux将会更便宜,最高端的AIX机器是您可以购买的功能最强大的机器之一 - 否则没有多大差别,大多数OSS软件已经或可以轻松移植到AIX。

您最好的策略是重用现有的COBOL COPYBOOK并编写一个COBOL程序,它读取平面文件并插入到更多的portbale格式(XML,MySql imort文件,基于文件的数据库如sqlite或直接插入到Web服务器上的数据库)。

这种方法的独特优势在于常用的COBOL ideosyncrasies,如“PIC BBBB99.99-”,“REDEFINES”,“取决于开启”,“COMP SYNCHROISED”冗余字节处理中的字符格式编号,压缩的十进制“COMP-3”格式,真的很难在其他语言中重现。

应该指出的是,直到最近,COBOL都是能够正确处理Arithimatic(正如会计师所理解的)的少数几种语言之一。