随着项目的推进,是时候为下一阶段的开发工作做好知识储备工作了,我们系统底层的主要部分部署在CICS平台上,而本人负责底层的开发工作,因此有必要系统地学习一下CICS平台。以下是我学习CICS平台的一些粗略的学习笔记,在此记下以供日后温习。
一、本人对CICS的初步理解
CICS说白了就是一个中间件,它提供了一个面向事务处理的联机应用环境。在应用程序开发方面,CICS同DB2类似,通常也是以COBOL作为宿主语言的。对于要求拥有界面的在线交互式程序开发,会需要用到CICS。
说到CICS当然需要知道它的全称是什么了,它的全称是Customer Information Control System,即客户信息控制系统的意思。CICS最初出现在OS/370上,迄今已经有40多年的历史了,CICS支持多种操作系统,但目前仍然主要用于大型机的操作系统z/OS。CICS在大型机上的版本依次经历了1.7版、2.1版、3.1.1版、3.1.2版、3.3版和4.1版等,到CICS发展到5.x后便称为CICS TS(CICS Transaction Server)。CICS在应用程序方面最显著的特征是提供了界面功能和交互功能。
作为CICS中的联机处理,是同批处理相对应的一个概念。其中批处理是指在用户不直接干预的情况下,系统对批量资源在规定时间内,进行例行处理的过程。批处理主要有以下特点:
(1)所有需要用到的I/O区和工作区都应在程序中进行定义。
(2)由程序读入批量的输入数据。
(3)输入数据必须在处理开始前准备就绪,在处理过程中不得再次插入。
(4)程序直接向操作系统发出I/O指令。
(5)如果出现故障,处理可重新进行,或从故障点继续向后处理。
联机处理是指在用户直接干预的情况下,系统根据用户的输入在短时间内进行交互式处理的过程。联机处理主要有以下特点:
(1)用户可以在不同地点,通过不同的终端使用同一台主机。
(2)数据可以随时输入到系统中,而无须积累成批量后再输入。
(3)对终端的处理请求具有实时性的响应。
(4)输出信息通常直接在用户所在终端上显示。
(5)可以对同一个文件同时进行多种操作。
(6)用户可以在任何时候通过终端启动应用程序,而无须经过操作员的调度安排。
CICS作为一种中间件,是存在于操作系统和应用程序之间的一个子系统。CICS实际上是在操作系统控制下的一个分区中作为一个主程序运行。而其他联机应用程序则是在CICS的控制下运行的。CICS通常是结合DB2使用的。DB2同CICS一样,也属于一种中间件。CICS所处于的位置是操作系统和应用程序之间的事务管理层。借助CICS,应用程序不必直接同操作系统打交道,由此可以减轻操作系统的负担。同时,由于操作系统的负担得以减轻,因此也可以满足更多潜在用户和要求处理的事务。CICS作为一个子系统,为运行于其上的应用程序提供了类似于操作系统的管理功能,主要有:任务管理、文件管理、程序管理、队列管理、终端管理、系统服务、恢复机制和外部安全管理。
二、CICS中交易和任务
交易(Transaction)和任务(Task)是CICS中的两个最基本的概念。这两个概念的产生,个人认为很大程度上是CICS是面向事务处理的缘故。在CICS中,一个交易是指一组相关联的操作序列或为了完成一个特定功能的一组步骤。交易通常产生于终端和数据库之间,属于一种应用过程。一个交易中既可能只有一个操作,也可能存在一组操作。CICS中的任务是指操作员或用于请求的特定交易的一个实例。一个任务实际上就是一个交易的一次执行过程。如果将交易看作一个程序,则任务就相当于是一个进程。
三、CICS的基本操作
(1)CICS的登录:L CICS。
(2)CICS的启动方式:
冷启动:正常关闭CICS,并且全新安装CICS。该重启方式将会清除某些信息。
热启动:正常关闭CICS,但在关闭之前要求所有正在运行的任务依次完成。这种重启方式实际上为最好的一种方式。
紧急启动:非正常关闭CICS,通常是由于电力故障等外在原因造成的,此时,为保证数据的一致性,CICS在重启后,将回滚所
有未完成的逻辑工作单元。
(3)CICS的签到操作:CESN
(4)CICS的退出操作:CESF
(5)与位于控制台中心的操作员通信: CWTO 'Hello, Administrator!'
(6)将消息发往其他终端:CMSG 'CALL TEM1' , R=TEM1, S ----- 此命令向终端TEM1发送消息。
如果需要向所有终端发送消息,即向所有终端进行广播,可以使用以下命令:
CMSG 'CALL ALL' , R=ALL , S
(7)对消息进行查找:CMAC
(8)对指定的CICS命令进行解释:CECI
(9)对CICS命令语法的检查:CECS
(10)浏览临时存储队列:CEBR
四、CICS编译处理过程
涉及到CICS的程序在编译连接时与普通程序是有所不同的。此外,关于CICS在实际中所用到的各种资源,都是需要在CICS子系统上进行定义的。CICS任务的执行及程序的调试也同样需要在CICS子系统上进行。
涉及到CICS的程序从源代码到可加载模块之间的编译流程通常需要经历3个处理步骤。这三个步骤依次如下:
(1)CICS转换(CICS Translation)
(2)编译(Compilation)
(3)连接编译(Link Edit)
五、CEDA、CEMT和CEDF的使用
CEDA、CEMT和CEDF是编写CICS程序最常使用的命令。其中,CEDA是资源定义命令,CEMT是资源查看和设置命令,CEDF调试程序命令。
(1)在实际应用中,通常首先需要将在ISPF中所开发的程序在CICS子系统中进行定义。定义程序的相应操作如下:
CEDA DEFINE PROGRAM(TESTPGM) GROUP(TESTGRP)
以上操作在CICS中定义了程序名为“TESTPGM”的程序。同时,该操作还将这一程序定义在了名为“TESTGRP”的组中。组在
CICS中是用来将各种相关资源存放在一起的,其本身严格来说并不属于一种CICS资源。
当定义完资源后,在实际应用之前,还需将所定义的资源进行安装。所谓安装,实际也就是将该资源所包含的所有数据读入内存。
原因在于CPU是只能执行读入内存的程序的。安装也是使用CEDA进行的,以下为几段相应的安装操作:
CEDA INSTALL PROGRAM(TESTPGM) GROUP(TESTGRP)
CEDA INSTALL PROG(*) GROUP(TESTGRP)
CEDA INSTALL GROUP(TESTGRP)
以上第一条操作是将TESTGRP组中的程序TESTPGM进行安装;第二条操作则将安装TESTGRP组中的所有程序;第三条将安装
TESTGRP组中的所有资源。
CICS中经常使用的缩写:
DEFINE: 可以简写成为D
PROGRAM: 可以简写成为PROG
TRANSACTION: 可以简写成为TRANS
FILE: 可以简写成为F
TERMINAL: 可以简写成为TE
GROUP: 可以简写成为G
ALTER: 可以简写成为AL
INQUIRE: 可以简写成为I
SET: 可以简写成为S
使用CEDA也可对已定义后的资源的各种属性进行修改。例如,可以将某一交易的关联程序改为其他程序,或者将该交易所在的
组等等。以下操作可以对TESTPGM组中的TST1交易的相关属性进行修改。
CEDA ALTER TRANS(TST1) G(TESTGRP)
该操作执行后,系统将给出一个列表,列表中包括所指定的TST1交易的各种属性信息。当需要修改某一属性值时,直接在该列
表中相应的属性位置修改即可。
此外,若要显示交易的详细信息,可以使用以下命令:
CEDA DISPLAY TRANS(TST1) G(TESTGRP)
若要以列表的形式显示资源的属性(资源名称、类型、所在组名以及创建时间),可以使用以下命令:
CEDA EXPAND GROUP(TESTGRP)
(2)CEMT主要用于对定义后的资源进行查询以及设置,通常和CEDA的联系最为紧密。例如,以下操作将查询在CICS上定义的所有
程序资源。
CEMT INQUIRE PROGRAM(*) = CEMT I PROG(*)
以上两条命令是等价的,执行后,将会把CICS上所有定义过的程序列表出来。该列表相对于第一种方式中的列表信息要简略一
些。对于该操作而言,将主要只显示程序的名称、长度、访问权限等相关内容。同时,在列表中的某行程序旁边输入“I”,便可
以直接对该程序进行安装了。
CEMT SET PROGRAM(TESTPGM) NEW = CEMT S PROG(TESTPGM) NEW
以上操作中的“SET”表示此时CEMT用于对资源进行设置,而"NEW"则表示该设置为更新设置。当使用以上方式在CICS中更
新程序后,可以通过此时屏幕上显示的程序长度来判断是否更新成功。通常情况下,如果程序长度有变化,说明更新成功了。
(3)CEDF相当于CICS中的一个程序调试器。使用CEDF时,首先在屏幕左上角输入“CEDF”,然后清空屏幕,输入被调试程序所
在交易的交易号。此时,系统将首先显示该交易所生成的任务最初的EIB信息。使用功能PF7和PF8可上翻或下翻输出信息,使
用有ctrl键执行下一步操作。使用CEDF不仅可以显示程序在单步执行时的信息,也可以在执行过程中对其进行干预。这种干预体
现了CEDF的交互式调试功能。除了以上干预方式外,CEDF通常还有以下几种干预方式:更改异常条件、通过“NOOP”或
“NOP”跳过某些CICS命令、异常终止(ABEND)一个任务。