4月8日,OSCHINA开源站作者白开水不加糖发布了一篇《IBM 为 Linux on x86 创建了一个 COBOL 编译器》的文章[1],介绍了IBM 公司宣布推出的一款适用于 Linux on x86 的 COBOL 编译器和Linux上的COBOL运行环境。
文章短小精干,感觉有些专有术语翻译得略微有点生涩,读完意犹未尽。同时,也触发了一些思考,让我们一起来延展、探讨一下。
到底是个啥东西?

2. 有人在Linux上编译COBOL程序吗?
老牌编程语言 COBOL,喜欢的人自然喜欢,简洁高效,处理过程自然,上手容易。不喜欢的人会觉得其是“上古语言”,有限理性的个体也很难转变成拥护者。COBOL上一次引起人们的广泛关注还是2020年新冠期间美国新泽西州政府急需 COBOL 程序员,以修复已使用了40多年的失业保险系统。 这个事件真实的展示了在Linux上运行COBOL的定位,(几乎不修改代码)快速移植现有COBOL程序到云平台,刷新底层支撑技术堆栈,减低运行成本。同时为优化、替换和阶段性剥离现有遗留系统提供较大的操作空间。这可能就是在Linux上编译COBOL程序的意义。
3. 在Linux上面运行COBOL语言,以前没有吗?
答案是有的,不过不是IBM的。商业版是MicroFocus COBOL[3],开源的是GnuCOBOL(以前叫OpenCOBOL)。支持的平台都包括了Linux, Windows和主流的商用版Unix。
4. 那这次发布的IBM版本有什么不一样的意义?
现在还在运行的COBOL生产程序,应该大部分都运行在IBM平台上,对应z/OS、AS/400和AIX操作系统。前述非IBM COBOL编译器虽然都支持在Linux上编译,且支持的COBOL标准也类似(COBOL 85/2002/2014 ),但现有存量COBOL程序移植到Linux平台上,使用IBM的COBOL编译器,因为编译器同源 ,部分运行库共享及互操作性,编译过程和移植过程应该更加丝滑。而且,更重要的是,还有下面要谈到的CICS问题。
5. 光有个编译器,意义其实不大,那CICS运行环境呢?
我们知道,仅仅是有一个语言编译器是不够的,特别是考虑到COBOL联机程序基本都运行在CICS中间件里。重点来了,目前无人提及的信息,和COBOL编译器同时发布的CICS TX on Cloud 11.1[4]。前面说的COBOL编译器,其实也可以是CICS TX on Cloud 11.1的一个组件(不同的软件发布方式)。有了这个神器,现有z/OS、AS/400和AIX上的CICS/COBOL程序可以很方便的移植到K8S Docker/Linux平台上。同时提供了巨大的兼容性:
VSAM/QSAM文件仿真特性提供数据兼容性,现有COBOL程序中的嵌入式EXEC CICS语句可以不用修改的直接继续使用,厉害了!
COBOL批处理应用程序能够读写存储在IBM Db2®和CICS TX结构化文件服务器(SFS)/QSAM中的文件内容。想象一下,如继续访问DB2,那改一下配置,原有的EXEC SQL也不用修改了。
通过CICS TX和主机CICS之间的互操作性,部分需要修改源代码的交易或者批量程序可以暂时先不移植。
能够在各种云平台上创建和运行COBOL程序,可以方便、灵活地创建可移植且可生产就绪的CICS TX容器。
认证的Red Hat Operator,简化Kubernetes上CICS TX程序部署和管理。
红帽OpenShift兼容的红帽认证CICS TX容器镜像,用于创建可靠,安全且可移植的容器。
能够使用通道和容器API通过SOAP XML Web服务传递超过32K字节的数据。支持EXEC CICS WEB客户端API,该API使CICS TX应用程序可以作为Web服务公开。
支持PostgreSQL和MariaDB开源数据库作为资源管理器。

更多一点的技术细节:支持任何运行Docker 和K8S的x86硬件,32位软件,最低Red Hat UBI 8.2操作系统,支持主机CICSV5.6, CTG 9.2,MQ 9.2,支持数据库是Db2 11.5和Oracle 19C,Redis 5.0.4, 日志集成Elastic Filebeat 5.5.1。除了COBOL,还支持GNU C compiler gcc/g++和Java 2 SE 8.0。
6. 那集成开发环境IDE呢?
官网没有关于IDE的信息,企业现有的IDE需要选择安装支持COBOL的插件,传统支持COBOL的IDE都是可以继续沿用的。比如eclipse COBOL插件,开源的Open Cobol IDE[5]也支持 Mac OS + Win10平台。Visual Studio Code[6]里面也有支持COBOL的扩展插件,提供基本的源代码查看,编辑和编译功能。
7. CI/CD 过程
都可以上云了,现有的CI/CD过程该怎么用就怎么用吧。不过DevOps工具链还是要调整适配的,比如版本管理,Build脚本,测试脚本,发布流程等等 。
8. 可以用来干什么?
有了这个神器,目前可以脑补到最大两个场景:一个是开发环境的释放,COBOL程序员的春天来了,可极大便利应用程序员的开发工作,想象一下,在自己的虚机/容器/K8S上开发COBOL程序是多么自由的一件事情。毕竟主机的最佳安全等级还是有管理代价的;另一个毋庸置疑的场景,极大简化、加速传统COBOL程序的优化、移植工作。
9. 可以搬到我家来吗?
COBOL编译器和运行时肯定是可以安装企业数据中心的。CICS TX On Cloud的名字稍微有点让人困扰,但其软件许可证模式感觉是可以安装在企业内部数据中心的。或者即使目前不行,未来也是可期的。这2个产品的发布,让我深刻感受到IBM混合云的决心,是实实在在“编写一次,到处运行”坚实举措。在最核心的应用领域,给了客户运行灵活性和新的技术选项。
10. 还有什么期待?
请IBM可以方便地开放给大家免费试用吧,完善工具链(IDE等),移植主机上CICS报告工具(CICS PA,细粒度分析太好用了),批量方面JCL到脚本的转换工具等,都是IBM可以帮助客户走向混合云的发力点呢。
以上,都是个人不成熟的看法,我只能基于已知信息作出判断,因此是“有限理性”。如有异议,你是对的。如觉有益,请帮助点个“在看”。
[1] https://www.oschina.net/news/136466/ibm-cobol-linux-on-x86
[2]https://www-01.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/9/872/ENUSAP21-0019/index.html&request_locale=en
[3] https://www.microfocus.com/en-us/products/visual-cobol/
[4]https://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=an&subtype=ca&appname=gpateam&supplier=872&letternum=ENUSAP21-0038
[5] https://tech.codefog.com/2016/cobol-install-configure
[6]https://marketplace.visualstudio.com/items?itemName=bitlang.cobol




