在主机世界里运行的程序中,有一些是用比较早期的语言编写的,比如PL1、Assembler、COBOL等。随着计算机技术的发展,这些程序已经无法满足当今科技高速发展的需求。
比如,客户需要把主机上的一些数据以JSON数据格式发送到MESSAGE QUEUE服务器里,然后从MESSAGE QUEUE服务器中抽取相应数据进行商业开发。理论上可以直接修改这些老程序,但这会是相当大的工程;而且,现代需求日新月异,也许在修改好程序后,又有了新的需求。另一方面,从主机资源的消耗上来说,修改这些程序势必增加主机资源的开销,如MIPS、MEMORY等,这对于客户来说也是一个很大的挑战。
如何既不修改或少量修改原来的老程序,又能减少主机资源的额外开销?
针对这种情况,CICS也提供了解决方案。从今天开始,我们会通过一系列文章,借助一个应用场景,来介绍CICS的一种解决方案:
应用场景流程图
应用场景主要包含以下步骤:
后台是COBOL程序,该程序会在CICS的CHANNEL/CONTAINER放入需要发送的数据,我们统一把COPYBOOK的数据放入CHANNEL/CONTAINER中,然后通过EXEC CICS LINK调用运行在CICS JVM Server的Java程序;
根据需要把COPYBOOK转换成相应的Java POJO类,这个类把COBOL程序中用到的COPYBOOK变量与POJO类的属性一一对应,再把POJO类以jar方式添加到Java程序库中,以便后续编写Java应用程序时调用。在转换Java POJO类时,可以使用IBM Record Generator工具轻松转换;
编写Java应用程序并运行在CICS的Liberty profile中,当Java运行在CICS里时,会自动使用zIIP(z Systems Integrated Information Processor)这类廉价CPU,释放general CP的使用,以节省整体MIPS的开销。通过在Java中添加@CICSProgram的注解把Java程序暴露成CICS程序,Java程序再通过JCICS(Java与CICS连接的API)获取CICS中CHANNEL/CONTAINER的数据,然后通过CICS的在线转换程序DFHJSON把数据转换成JSON格式的数据;
最后,把转换成JSON格式的数据发送到KAFKA(KAFKA是一种高吞吐量的分布式发布订阅消息系统,是分布式的流数据平台,它可以高效处理大量流数据)服务器中。
在后续的文章中,我们会针对每个步骤进行详细的讲解,敬请期待哦~
作者:王典
CICS for z/OS开发测试工程师,在Db2 for z/OS tools 自动化回归测试、Db2 for z/OS 运维与性能调优、TDS客户化与运维、z/OS 系统集成测试和CICS for z/OS 开发测试等方面拥有丰富经验
作者:米爱莲
IBM中国系统实验室CICS L3技术支持工程师,在交易中间件领域从事相关技术工作逾七年
扫码关注 “三言两语CICS”
内容声明:本文仅代表作者的个人观点,与IBM立场、策略和观点无关。文中专业名词因翻译原因,表述中难免存在差异。如有疑惑,请以英文为准。同时数据来源于实验室环境,仅供参考。如果您对我们的话题感兴趣,请给我们留言。