IBM大型主机(Mainframe)技术简介之七——应用开发摘要(三)

本文简要介绍Mainframe的CICS技术框架。

CICS基本概念

CICS是Mainframe事务(Transaction)处理的主要媒介,它位于操作系统z/OS之上,处在应用程序(例如Cobol程序)、用户和数据库等子系统之间,完成实现业务功能的映射。

从应用程序角度看,CICS提供了一个编程界面,提供应用程序大部分原来由OS提供的功能。

CICS在系统指派给它的唯一的Address Space中执行,在这个单一的Space中CICS支持Multitasking,这里的任务task指CICS能为用户同时分别服务,也就是说CICS支持多用户。

CICS两种编程模式Conversational和Pseudo Conversational。前者是始终处于等待用户输入的状态,不常使用;后者会保存事务状态信息,因此可以不必等待。通常实践的CICS程序是Pseudo Conversational;

CICS装载和运行程序是Reentrant,即支持Multithreading,即同一段代码可执行同一段代码(指用COBOL实现的逻辑),代码位于CICS的Address Space中,而每个执行者(User)可以有他们自己的Working-storage从而实现数据的分离和私有化。

CICS通过一系列服务(Services)和其他子系统交互,例如Program Control提供程序调用转移;File Control访问VSAM数据等。

CICS的实现语言:BMS mapset(类汇编语言)。
物理(physical) mapset用于描述界面显示和布局
符号(symbolic) mapset是一个COBOL的COPY MEMBER即代码段,以允许相应COBOL程序操作在物理mapset中的显示数据。



MAPSET

mapset的基本语法:
PRINT NOGEN //起始
名字 DFHMSD // mapset起始
名字 DFHMDI // map起始,定义map界面大小等
[名字] DFHMDF // field(字段)起始,定义字段的位置长度属性等
DFHMSD TYPE=FINAL // mapset末尾
END //末尾

字段是一个map上的一段连续字符,如果mapset中给它命名,则可以在cobol程序中依照X(长度)引用,可以是protected(不可更改)或是unprotected(可更改,用户输入或/和显示输出),除了这个分类外字段还有一些其他的属性。每个字段均以一个属性字节标志起始(数据字段可再以另一个属性字节结尾,用以例如指示光标跳转),属性字节占据显示位置,但不显示任何内容。属性字节包含以下主要信息(相见参考资料[5])
IC 指定光标将在该attribute控制的字段,如果多个IC则出现在最后一个


Cobol程序

对应的Cobol程序的结构释义(仅仅列写关键区段):
IDENTIFICATION DIVISION.
PROGRAM-ID. <程序名> // 这个在CICS配置时需要保持一致

DATA DIVISION.
WORKING-STORAGE SECTION.

01 <本地对应通信数据名称> // 本地通信数据区,这是本程序使用的

COPY <mapset名称>. // 将根据physical mapset手写或生成的symbolic mapset展开到程序中,得以引用mapset中字段

LINKAGE SECTION.
01 DFHCOMMAREA // 跨程序执行通信数据区

PROCEDURE DIVISION.
0000-主程序名.
// 条件: WHEN EIBCALEN=ZERO // 第一次执行(后续执行均为正)

// 某个退出逻辑条件
PERFORM XXXX-发送结束消息 // 发送结束消息

EXEC CICS

RETURN // 退上一层

END-EXEC

...
EXEC CICS
RETURN TRANSID(<程序执行的事务的ID>)
COMMAREA(上述<本地对应通信数据名称>)
END-EXEC.

XXXX-发送结束消息
EXEC CICS
SEND TEXT FROM(‘关闭消息’)
ERASE
FREEKB
END-EXEC.


CICS程序模块调用和转移的原则:

RETURN总是返回上一逻辑层,可含或不含tran-id;
LINK总是开启一个新的下一个逻辑层,并让程序运行在这个逻辑层中;
XCTL总是进入同层的程序,于是相当于新的程序替换老程序;
最基础层是CICS。


DFHCOMMAREA是跨执行的公共区,位于COBOL程序的Linkage Section, 供接续程序复制到working-storage section中使用;而在程序完成后必须将working-storage section中的内容交给return。

常用的CICS命令(作为事务出现),详见参考资料[4]
CESN 登录
CESF 注销
CECI 命令行解释。如可以测试一个Mapset,通过CECI SEN M(Mapset名)
CEDA 事务装载和维护:

CEDA INS TRANS(指定事务id) GROUP(group名) 将事务装载到group中
CEDA INS PROG(程序id) GROUP(group名) 将程序装载到group中
CEDA INS MA(mapset id) GROUP(group名) 将mapset装载到group中

CEDF 开启事务程序调试(之后运行的事务每个map交换步骤均会出现调试界面显示运行状态信息)

CEMT 加载Program: CEMT SET PROG(程序名) NEWCOPY



[未完待续]


参考文献:

[1] http://www.csc.ncsu.edu/faculty/mpsingh/local/SOC/s08/hw/p6.html

[2] http://sites.google.com/site/cobolmaterial/cics-tutorial

[3] (IBM)CICS内建事务:
http://publib.boulder.ibm.com/infocenter/cicsts/v3r1/index.jsp?topic=%2Fcom.ibm.cics.ts31.doc%2Fdfha7%2Fdfha726.htm

[4] Mainframe绝对wiki参考宝典:
http://www.wikimf.com/index.php?title=CICS_MAP_and_CICS_program

[5] IBM参考DFHMDF
http://publib.boulder.ibm.com/infocenter/txformp/v6r0m0/index.jsp?topic=%2Fcom.ibm.cics.te.doc%2Ferziai00160.htm




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值