交易(Transaction)和任务(Task)是CICS中的两个最基本的概念。这两个概念实际上也是基于CICS面向事务处理的特点而产生的。
1.CICS中的交易
在CICS中,一个交易是指一组相关联的操作序列或为了完成一个特定功能的一组步骤。交易通常产生于终端和数据库之间,属于一种应用过程。一个交易中既可能只有一个操作,也可能存在一组操作。例如,在ATM机上完成的取款过程便可视作一个交易,该交易所含的一组操作如下:
(1)验证用户帐号和密码信息。
(2)读取用户取款请求。
(3)检查用户卡上余额是否充足。
(4)提取用户所请求数量的现金。
(5)询问用户是否需要打印凭单。
在CICS中,每个交易是由一个相应的交易ID(TRANSID)来标识的。每个TRANSID由4个字符所组成。同时,交易通常还具有以下两个特点:
q 交易处理的对象主要包含两个。其中一个是终端用户,另一个是被处理的数据。
q 每个交易处理过程是由终端用户或程序提交一个简单请求而启动的。
在CICS系统内部,交易是根据一定的顺序执行的。这种执行顺序在基于CICS的应用开发中也将有一定的反映。交易的执行顺序通常如下:
(1)输入:输入一个TRANSID以标识相应的交易。
(2)创建:由CICS创建一个任务处理该交易,任务将处于准备状态。
(3)分派:确定CICS中处于准备状态的哪一个任务将运行,并对其进行分派。
(4)执行:被分派的任务启用相应的程序以运行。
(5)处理:任务所启用的程序调用CICS服务时,任务本身将释放CPU并等待服务完成。
(6)重分派:服务完成后,任务回到准备状态,CICS再次对其中的任务进行分派。
(7)返回:当交易中的所有操作都完成后,交易程序通过RETURN命令,将控制权交还给CICS。
(8)终止:CICS终止任务,并回收相关资源。
实际上,当定义一个交易时,往往需要定义相应的程序,并将其与该交易建立关联。此外,应用程序所访问的资源也都需要在CICS中进行定义。以下为几个常见的资源及其访问位置:
q 终端,通过TCT(Terminal Control Table)访问。
q 交易,通过PCT(Programming Control Table)访问。
q 程序,通过PPT(Processing Program Table)访问。
q 文件,通过FCT(File Control Table)访问。
2.CICS中的任务
CICS中的任务是指操作员或用户请求的特定交易的一个实例。一个任务实际上就是一个交易的一次执行过程。如果将交易看作一个程序,则任务就相当于是一个进程。
关于CICS中的任务,首先需要了解任务控制区域TCA(Task Control Area)的概念。每一个TRANSID标识了一个交易,而每一个TCA则代表了一个任务。
同时,每一个任务中还有一个惟一的执行接口块EIB(Execution Interface Block)。EIB是CICS用来和用户程序进行通讯的一组字段。EIB字段信息在COBOL的过程部中将可能被使用到。图为CICS任务中TCA与EIB的大体结构。
需要注意的是,由于CICS是支持并发性的,因此多个任务是可以同时执行的。并且,这些任务可以对应同一个交易的执行过程。例如,当100个用户在不同的终端上同时输入同一个TRANSID时。此时系统中可以只有一个交易,并且对应该交易有100个任务。
此外,关于CICS中的任务,还有以下几点需要注意:
q 每一个任务都有各自的工作存储节。工作存储节中的数据相对独立。一个任务在执行过程中其本身的数据不能同时被另一个任务使用和修改。
q 多个任务可以作为同一个交易的执行过程,因此也可以调用同一个程序。
q 当任务终止后,CICS将释放掉该任务所占用的所有内存。
最后需要补充的是,CICS中的交易是需要进行定义的,而任务则直接通过交易的执行来创建,因此不用定义。并且,交易是可以自己调用自己的,而任务则不能自己调用自己。