390开发实用技术: 重拳出击,CICS联机程序开发新手必看---一个典型的CICS程序,所有完备功能包括上下翻屏,增加/编辑/删除/拷贝纪录等

来源:互联网 发布:java中inheritance 编辑:程序博客网 时间:2024/04/28 12:34
经过前面基础知识入门的朋友,一定想知道典型的ONLINE程序是如何的. 下面的文章即将展现最典型的基于CICS,COBOL,DB2和MAPS MICRO的交易 ---纪录加油的交易. 此交易具有所有银行应用的功能,包括上下翻屏,增加/显示/修改/拷贝 数据库记录.



STEP1:首先我们要先规划一下要做的事情:两张MAP和对应着的两个程序,分别是上下翻屏的画面和显示明细的画面; 两个CICS交易,分别对应着两个程序;4个JCL,分别编译MAPS和PROGRAMS;两个DB2 DBRM和一个PLAN; 两个CICS的DB2 ENTRY和DB2 TRANS.
其中MAPS,PROGRAMS,JCLS,TRANSACTIONS不需多说,前面基础入门的文章已经提到.在这里要提一下什么是DB2 DBRM, PLANS和CICS DB2 ENTRY & DB2 TRANS.
DB2 DBRM: 负责进行程序和数据库之间的交流,可以打开DBRM来看看,看到的是一些SQL语句,比如SELECT, CURSOR等等
PLANS: 一个PLANS可以包含多个DBRM或者PACKAGE.PLAN里面包括一些授权信息,这可以理解为运行程序的时候需要以某种权限去访问数据库,比如SELECT权限,UPDATE权限等.
CICS DB2 ENTRY & DB2 TRANS: 要让CICS和外部的DB2进行通讯,除了要定义DB2 CONNECTION之外,还需要定义DB2 ENTRY & TRANS. 其中DB2 ENTRY里面定义了ENTRY名字,所属GROUP名字,还有要用到的PLAN名字; DB2 TRANS定义了该交易对应于CICS里面哪个已定义的交易,以及要用到的DB2 ENTRY名字.有了这两个定义,CICS内部交易就可以访问外部数据库了.

STEP2: COBOL程序里面要实现上下翻屏,不能像AS/400 RPG+DISPLAY FILES那样简单定义SUBFILE,而必须要自己写出算法.一般来说是定义SQL CURSOR,在打开CURSOR的时候每次读几条记录,然后记录下第一条和最后一条记录,以便下一次上下翻屏,实例如下



STEP3:编写上下翻屏屏幕文件和显示明细文件如下



STEP4:编写主控程序,实现上下翻屏; 编写显示明细程序. 在这里要请读者注意程序之间调用的几个方法: XCTL, LINK和RETURN的区别. 一般来说,CICS RETURN(TRANSID)是表示在CICS TRANSACTION结束之后,下一个即将运行的交易的名字.请注意是'即将',就是说,RETURN之后,实际上交易已经不占用内存和CPU资源. 另外就是XCTL和LINK: XCTL是把控制权交给另外一个程序,XCTL有点像GOTO,去了就不回来了.而LINK是相当于执行一个子程序,执行完之后还是会回来的.





STEP5:MAP的编译作业流在这里就不再多说,前面入门的文章已经有说明;这里要说的是COBOL的编译作业流.这个作业流包括预编译SQL,预编译CICS,LINK和BIND等过程. 这里的BIND是把两个程序相关的DBRM都一起BIND进来了,如果相关程序多的话,也可以在ISPF菜单下用DB2I的BIND PLAN功能去做。



STEP6:在CICS下分别定义、安装MAPS,PROGRAMS,TRANSACTION,DB2 ENTRY, DB2TRANS,在这里给出DB2 ENTRY的画面



STEP7:相关功能演示:

入口画面

向下翻屏

显示明细

编辑明细

删除

新建

拷贝