常用的CICS命令

我们可以在COBOL,PL/I,Assembler等应用程序中写CICS命令,在COBOL和PL/I中,格式分别如下所示:
COBOL:
EXEC CICS function[option[(arg)]]… END-EXEC
PL/I:
EXEC CICS function[option[(arg)]]… ; (末尾有分号)

CICS的命令很多,不过最常用的也就是如下几个。所以,只要熟悉这几个的用法就好了,其他的当做了解即可,需要的时候再去查IBM manual或者CICS手册。

EXEC CICS ABEND [ABCODE(arg)]
EXEC CICS ASKTIME [ABSTIME(arg)]
EXEC CICS ASSIGN [OPID(arg)]
EXEC CICS RETURN [TRANSID(arg)]
EXEC CICS HANDLE CONDITION
EXEC CICS IGNORE CONDITION
EXEC CICS READQ TS [QUEUE(arg)]
EXEC CICS WRITEQ TS [QUEUE(arg)]
EXEC CICS DELETEQ TS [QUEUE(arg)]
EXEC CICS RECEIVE MAP
EXEC CICS SEND MAP
EXEC CICS XCTL PROGRAM
EXEC CICS LINK PROGRAM

分享到:

CICS应用编程接口


  • 开发语言

可以用COBOL,C,C++,Assembler,PL/I等来编写CICS应用程序的主要的大部分逻辑处理功能,而只有少数的一部分功能需要用到CICS命令

  • CICS命令格式

如: EXEC CICS SEND FROM (MSG-AREA) LENGTH(5) END-EXEC
——向终端发送长度为5的MSG-AREA信息
EXEC CICS READ FILE(‘FILEA’) INTO (CUSTOMER-REC) RIDFLD(CUSTOMER-NUM)
——读和修改VSAM文件
EXEC SQL SELECT colum_names INTO program_variables From Table_name WHERE … END-EXEC
——读和修改关系型数据库
EXEC CICS READ … RESP(RESPONSE-FIELD)
EXEC CICS HANDLE CONDITION
——处理异常条件
CICS API主要服务
CICS API主要服务:访问和修改文件;访问和修改关系、层次性数据库;终端的输入和输出;用户定义的数据队列;在一个事务中的多程序间的控制操纵;启动另一个事务;

  • CICS程序控制的3种方式

RETURN:释放控制于上一高层程序
LINK:链接出去执行后返回,就像执行一个子程序
XCTL:传递控制于制定程序,但不再返回程序,而返回本层

  • CICS程序的安装

1、预编译,即翻译,将EXEC CICS语句翻译成编程语言的源语句。当然,如果源程序中还是用了EXEC SQL嵌套数据库功能,那么在此之前必须先进行关系数据库的预编译。
2、编译源程序,生成二进制代码。
3、链接,将链接生成的结果放到装载库(load lib)当中。

 

 

 

 

 

 

 

 

我用word简单画了个图,丑了点。

分享到:

CICS事务处理过程

Region概念
CICS region(区域)概念类似于一个进程,有一个能执行多个线程的地址空间。每个region都能拥有资源,如终端,程序,数据库,每一类型的资源用一张表来描述,每一个表项代表一个资源,一个应用程序的失败,仅仅只影响它所在的CICS region。这样的话,如果你有一台大型机部署在北京,那么大型机上面部署的中间件CICS就可以根据每个省来分不同的region,这样,每个region都能拥有独立的资源,而彼此各省之间不受影响。

CICS的功能
CICS事务管理系统,具有很多功能。包括:终端管理、任务管理、安全管理、程序管理、文件管理、队列管理、恢复管理、系统管理(如存贮、时间、API)等管理功能。我再想,这么牛,是不是再加点线程调度管理之类的就是一个操作系统了??

CICS事务处理过程
当一个事务从终端进入CICS,CICS就初始化一个任务(task)来处理该消息,并且创建用于表示该任务的控制块(task control block)。基于已有的在该CICS region上的资源的定义,CICS确定该事务所需用到的程序,并将该程序装载如内存。而程序中的EXEC CICS命令则是要求服务。
因为绝大多数事务是从终端进入CICS的,所以CICS事务处理过程就可以简单定义成CICS任务处理过程了。当然除了终端输入这种方式外,还可以通过其他途径来初始化任务,但是终端输入是最普通的一种。(至少我平常的工作中基本也只用到终端输入这种方式来初始化任务)。下面我们就来详细说下CICS任务处理的过程:

假如我登陆CICS的某个region,从终端输入事务INQY,事务INQY所对应的程序为PROG1,接下来在应用程序,CICS和大型机主机都发生了什么事呢?

(1)、CICS启动任务管理功能,确定事务的ID(INQY)是否在CICS该region定义,如果否,则发出错误信息。

(2)、如果事务INQY已经定义,CICS的任务管理功能就请求存贮并且创建任务控制块(task control block)

(3)、CICS启动安全管理功能,如果事务INQY是被安全保护的,CICS验证用户的使用权限

(4)、CICS启动程序管理功能,该任务需要运行应用程序,事务定义中应该包含要执行的第一个程序名PROG1

(5)、在程序定义表中找所要运行的应用程序PROG1的定义(其定义指明了该程序的实现语言)。如果程序PROG1不在内存里面,那么程序管理功能就申请内存将其从程序库装入内存。

(6)、CICS复制该程序PROG1的工作存储区到该任务相关的另一存储区。允许PROG1的单独程序副本被多任务共享

(7)、EIP(EXEC Interfacer Program)接受程序请求并且返回异常条件和其他EIB(EXEC Interface Block)信息

(8)、如果程序PROG1中包含EXEC CICS READ等命令来读取文件,那么CICS就启动文件管理功能发出对VSAM读记录的请求

(9)、应用程序常常利用基本映像支持(BMS)来发出已格式化数据到终端

(10)、对VSAM数据集的改变,会被建立日志以便失败时恢复

(11)、当任务结束时,返回控制权给CICS,所有于该任务相关的存储被释放,但程序保留在内存,直到无任何任务使用它和该空间要被使用为止

分享到: