设为首页 收藏本站
查看: 975|回复: 0

[经验分享] IBM大型主机(Mainframe)技术简介之七——应用开发摘要(三)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-10-4 13:36:52 | 显示全部楼层 |阅读模式
本文简要介绍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的基本语法:(注:MAPSET汇编和CICS都不用//作为注释,但是这里用于说明,且不会发生二义,后同)
           PRINT NOGEN            //起始
<名字>   DFHMSD                  // mapset起始
<名字>   DFHMDI                  // map起始(即一个80x24界面描述,一个mapset可以定义多个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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-122625-1-1.html 上篇帖子: IBM DB2 Data Access Application Blocks for .NET 发布了 下篇帖子: 关于IBM 随机启动选项(哪些保留那些删除)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表