4

我们有一个非常重要的应用程序,但到目前为止还没有源代码。该应用程序是用 COBOL 编写的,编译版本在我们的生产系统中并且正在运行。

但是,我们需要迁移到新的服务器,以及新的 cobol 编译器。我们的印象是,我们需要重新编译代码才能使其在新服务器上工作。运行现有的已编译程序会导致运行时内存错误。

我们有一些程序的源代码,但它是旧的。不确定它与编译程序之间的差异是什么。

好的,那么问题是——我们应该怎么做?

时间不在我们这边,因为我们必须将旧服务器发回以获得信用。想法,建议,疯狂还是其他?(源代码控制很明显,这不是我能做的,所以保存讲座)

4

8 回答 8

11

创建旧服务器的映像。然后将旧服务器作为新服务器上的虚拟机运行。

但是,我同意更好的选择可能是保留您的生产服务器。

于 2008-12-01T18:08:33.927 回答
6

从短期来看,安排保留旧服务器可能会更便宜。从半长期来看,您需要花时间和预算来重新设计程序,要么重新编写它,要么看看将旧代码改造成程序当前所做的工作需要付出多少努力。

于 2008-12-01T18:07:41.013 回答
3

可悲的是。您应该咨询源恢复公司

于 2008-12-01T18:23:57.203 回答
2

如果你的源代码和编译后的版本比较接近,试试这个:

  • 将新版本反编译成汇编程序
  • 将旧的源代码编译成汇编器
  • 比较
  • 尽可能将新版本与旧版本的差异调和到旧的源代码中
  • 重复

为了增强这一点,并且可能作为第二步,因为它将使源代码远离新的编译版本,使用输入数据进行测试,然后根据输出尝试逆向工程创建该输出所需的内容。您拥有的测试输入数据越多,它的效果就越好。

祝你好运!

于 2012-04-06T22:24:15.047 回答
1

(我不是 COBOL 程序员,但是..)如果您知道编译原始程序的编译器是什么版本,您至少可以编译旧的 cobol 源;如果编译的版本相同,则您知道源实际上是当前版本。

如果它们不同,您可以尝试(以某种方式)反编译,或至少反汇编,工作编译版本和新编译版本,并使用差异工具来了解有多大差异。

于 2008-12-01T18:13:41.703 回答
0

疯狂的建议:COBOL DECOMPILER --> SOURCE --> NEW COBOL COMPILER...?

(编辑: http: //juggersoft.com - PAID cobol 反编译器)

于 2008-12-01T18:12:24.933 回答
0

如果你有 .int (中间)二进制文件,你可以在新服务器上运行,如果没有,你必须重新编译它们。

于 2008-12-10T11:37:21.030 回答
0

该程序可能由外部资源生成,并且该人或软件公司或组织可能在其存储库中拥有最新的源。如果您最近合并,它可能由您的上级组织持有,或者可能在您组织中的不同或备份计算机安装中。开发人员的用户帐户上可能有一份副本,但可能尚未发送到生产或现场站点,或者总部的某个人有一份副本来评估并尝试解决问题。如果给这些人打电话,您可能会成功,或者您可以随时与安装计算机操作员或支持人员交谈,看看他们是否在磁带、CDROM 或其他备份存储上保存了一个。

于 2010-11-22T15:24:50.563 回答