从2009年开始在项目中使用IBM大型机OS/390操作系统,经历了几个开发项目,合起来差不多有了五、六年时间。
近年做了几个把应用系统迁移从IBM大型机迁移到X86服务器上的项目,基本上是迁移前的应用程序用什么开发语言迁,移后的应用程序也用什么开发语言。也就是把应用程序同种或者类似开发语言迁移(一般来讲,只需把因操作系统不同而导致的代码差异,做个工具转换一下)。其中有两种类型程序不好转换,一种是utility(有的utility查不到源代码只有功能说明书,或者源代码是用一种不常用语言编写);另一种是大型机汇编语言程序(因为与X86中的汇编语言差别很大,无法同语言转换)。
utility的转换思路:如果无法找到源程序或者源程序是特殊语言开发的话,根据功能说明书用COBOL、C语言或者java程序中的一种手动制作新的同功能的utility;如果找到源程序且源程序是常用开发语言的话,按那种常用开发语言的程序同样处理。其难点是有的utility的功能说明书很复杂,不好理解,主要看你的外语能力、理解能力和再设计能力了。
大型机汇编语言程序的转换思路:先判断汇编语言程序适合转换成什么开发语言程序(一般是COBOL、C语言或者java中的一种),再用工具或者手动转换。其难点是理解大型机汇编语言程序。要是没有设计书或者设计书与现存程序相差很大且程序很复杂,那就不太好理解了。
下面说一下IBM大型机汇编语言程序转换成COBOL程序的经历。
前几个应用系统迁移从IBM大型机迁移到X86服务器上的项目也有把IBM大型机汇编语言程序转换成COBOL程序,有的是utility用大型机汇编语言编写,有的是子程序用大型机汇编语言编写,本数不多业务也不难,一个项目最多不超过8本,用手动重新编码一个月就搞定了,做的也挺爽的。
大约两年前的一个应用系统项目竟然有大块业务是用IBM大型机汇编语言编写,分到我们组需要转换的IBM大型机汇编语言程序就有近300本,而且其中有三分之一的程序是又大又难的。由于该应用系统很古老,设计资料大部分都遗失了。经过试作业发现:如果按照以前的开发模式,这近300本程序在一年的开发周期内几十个人的体制都不一定能完成。怪不得别的公司做这个应用系统迁移项目失败了,这风险也太高了。
摆在我们面前的是要么不做这个项目要么就得改变开发模式。由于比较了解汇编语言且寄存器转换这个难点对我来说不是问题,经过研究我们决定接下这个项目并采用新的解决方案来开发这个项目。
新的解决方案效果很不错,提前3个月完成了项目开发,并且在项目高峰期也就是用了20多人,大大降低了成本,并且品质也得到提高。
关于新的解决方案,下一篇再聊。
(新解决方案的核心:用COBOL代码模拟汇编语言(ASM)代码的运行;采用【大型机汇编语言程序转换成COBOL程序软件】进行代码转换;用寄存系统的真实数据进行转换后的单体测试)
本人的电子邮箱:peace_c@163.com