在对BMS进行编译时,可以使用两个选项,即Type=DSECT和Type=Map;前者生成逻辑MAP,后者生成物理MAP。
可以在LINKAGE SECTION中说明一个数据结构,而用ADDRESS获取其地址,空间的分配命令包括GETMAIN,LOAD,READ和READQ。
在多用户的环境下,不仅要考虑交易的完整性与一致性,而且要考虑多交易对资源的争夺,即避免死锁现象的出现。为此,1.所有的应用程序必须以同样的KEY值顺序对文件进行访问,即升序或降序。2.所有应用在发起一个READ UPDATE命令后必须写一个REWRITE或DELETE或UNLOCK。3.WRITE MASSINSERT命令后需接一个UNLOCK命令。
CICS不支持广泛的混合语言编程环境,但COBOL可调用ASM的模块。但一个CICS交易可由多个执行程序所组成,利用LINK或XCTL命令来相互调用。
CICS对子程序的调用可包括三种形式,即EXEC CICS LINK,STATIC COBOL CALL以及DYNAMIC COBOL CALL。
在CICS的COBOL宿主程序中,CICS的DFHEIBLK(EXEC INTERFACE BLOCK)以及DFHCOMMAREA(communication area)在LINKAGE SECTION中被插入。
CICS的NESTING:1.必须将最高层的程序及其所有直接或间接的程序所为编译的一个单元来提交。2.在每个包含EXEC CICS命令的程序中,程序的调用参数被加入了DFHEIBLK和DFHCOMMAREA作为头两个参数。3.对每个包含CICS EXEC程序的调用语名中,亦将DFHEIBLK和DFHCOMMAREA作为头两个调用参数。
对于主控程序来说明,EIB的地址并不能确定,所以需要用如下的语句来确定其地址:EXEC CICS ADDRESS EIB(dfheiptr)。同样,利用ADDRESS COMMAREA亦可以获得通讯域的地址。
CICS的pseudo-conversational transaction不如conversational容易保持交易的完整性,因为UOW不能横跨Transaction,你需要另一个程序来保持交易的完整性。
在CICS中一个交易的storage由如下几个部分所组成:1.Transaction Work Area(TWA);2.User Storage(via a GETMAIN command issud without the SHARED option);3.COMMAREA;4. Program Storage。这些域均不是Recoverable,也不能由resource security keys来保护。
CICS在交易间共享数据的机制包括:1.Common work area(CWA--是唯一的在系统启动时被分配,并在CICS的SESSION存在期间存在的控制块,其长度是固定的,由系统初始化参数WRKAREA来指定,不是安全的,适用于小数据,如系统的状态等);2.TCTTE user area(TCTUA--is an optional extension to the terminal control table entry TCTTE,系统的启动参数TCTUALOC及TCTUAKEY说明了所有TCTUA的位置及storage key,你可以说明您需要一个TCTUA与一个终端相结合,则可在TYPETERM资源定义的USERAREALEN参数中说明其长度,长度对所有终端均是一样的,最大长度为255个字节);3.COMMAREA in RETURN commands(It is not recoverable,there is no resource security);4.Display screen;5.Temporary storage;6.Intrapartition transient data;7.Storage acquired by a GETMAIN command with SHARED option;8.Your own data sets。
CICS的姻亲关系(Affinity):1.交易的姻亲关系(Transaction affinity)是由交易间传递消息(information)所引起的,或者是由交易间的同步关系所引起的(2.3.1.1-1),在两个交易同步的情况下,利用事件控制块ECB或者是一个队列ENQ机制来完成;2.交易与系统的姻亲关系(Transaction-system affinity).
CICS传递交易数据的技术有以下三点:1.安全的技术,即COMMAREA的技术;2.不安全的技术,利用长生命期的共享区域,如CWA,GETMAIN SHARED域.3.可疑虑的技术,temporary storage,Transient data queues,trigger levels,利用CICS的同步或顺序命令如(RETRIEVE WAIT/START,START/CANCEL REQID,DELAY.CANCEL REQID,POST/CANCEL REQID).
你可以利用下面的任意一种技术以在CICS intercommunication environment下运行应用程序:1.Transaction routing,enables a terminal in one CICS system to run a transaction in another CICS system;2.Function shipping,enables your application program to access resources in another CICS system;3.Distributed program link(DPL),enables an application program running in one CICS region to link to another application program running in a remote CICS region;4. Asynchronous processing,enables a CICS transaction to start another transaction in a remote system and optionally pass data to it。5.Distributed transaction processing(DTP),enables a CICS transaction to communicate with a transaction running in another system,there are two interfaces available to DTP,command level EXEC CICS and the SAA interface for DTP known as Common Programming Interface Communications(CPI Communications)仅能用C,C++及汇编语言进行编程;6.Common Programming Interface Communications(CPI-C) provides DTP on APPC connections and defines an API that can be used on multiple system platforms;7.External CICS interface(EXCI) enables a non CICS program running in MVS to allocate and open sessions to a CICS system,and to issue DPL requests on these session。
交易的路由(Transaction routing),Transactions that can be invoked from a terminal owned by another CICS system,or that can acquire a terminal owned by another CICS system during transaction initiation,must be able to run in a transaction routing environment。
分布式程序联接(Distributed program link,DPL),分布式程序联接允许一个CICS程序(client program)去调用位于远端CICS region中的另外一个CICS程序。用四种方法可用于说明程序欲联接的程序是一个远端的:.1.在XPCREQ global user exit中说明远端系统的名称;2.在LINK命令中说明远端系统的名称(例子:EXEC CICS LINK PROGRAM(..),COMMAREA(..),LENGTH(..),DATALENGTH(..),SYSID(..),TRANSID(..),SYNCONRETURN,这里而说明SYSID且与本地不同,或者在程序资源定义中的REMOTESYSTEM option中说明程序的名称;而SYNCONRETURN表示客户和服务器程序分别作为工作单元,如果不说明,则表示作为统一的工作单元);3.在程序资源定义中说明远端系统的名称;By specifying the remote system name using the program autoinstall user-replaceable module(URM)。
CICS的错误恢复机制:1.在日志控制表JCT中定义日志,日志由日志号来标识,是一个从2到99的数值,数值1用作系统日志。每一条日志记录以一个标准长度域(LLbb)开始,然后是一个用户说明的标识符,最后是一个系统提供的前缀。2.在CICS表生成时,定义特殊的资源为recoverable。3.利用WRITE JOURNALNUM命令来输出日志记录,如果跟随一个WAIT选项,则即同步方式,交易要等待记录输出的完成,否则即异步方式,数据被写入到日志缓冲区中,还可以利用STARTIO选项以立即进行输出。4.利用恢复交易进行恢复(backout),恢复以UOW作为单位,一次SYNCPOINT即是UOW的开始。5.否可以用SAA Resource Recovery Interface进行恢复
CICS程序的测试:1.不要直接测试生产系统。2.不要直接由开发者进行测试。3.多次进行测试。4.利用CEDF交易进行初始测试。5.利用工具进行测试,TPNS即是专业测试软件包。6.测试程序是否即能处理正确数据又能处理非正确数据。
CICS例外测试(Dealing with exception conditions):1.CICS利用EXEC interface block(EIB)对例外进行响应,其中的值RESP即错误信息代码,除非其值为DFHRESP(NORMAL)。2.CICS蕴含的例外处理是中断程序,在C系列编写的程序中,没有例外处理。3.用户自己编写程序对例外代码进行响应。4.可以通过编程改变CICS的例外处理,HANDLE CONDITION condition(label),HANDLE CONDITION ERROR(label),IGNORE CONDITION,HANDLE ABEND是最主要的命令,还可以利用PUSH HANDLE和POP HANDL命令来挂起和激活(2.7.3-1)。
CICS提供两种类型的文件访问方式:VSAM和BDAM。在对一个记录进行访问时,应用程序必须对所需读取的记录以及存放数据的存储域进行说明。VSAM数据集包括三种类型的数据集,即KSDS,ESDS和RRDS。CICS支持带有键值的和不带有键值的BDASM数据集。BDAM支持使用位于DASM设备上记录的物理属性。
CICS数据表:文件控制命令可以访问数据表。数据表提供了一种构造、维护,以及对存放在虚存中的表中记录进行快速访问的方法。每个数据表同一介VSAM KSDS相结合,被称为是其资源数据集。
每张表由CEDA DEFINE FILE界面或DFHFCT宏来定义。当一个表被打开后,CICS利用将这个表所对应的资源数据集的数据导出的方法对其进行创建,并将其加载至虚存的16M以上的空间中。MVS/ESA中的CICS支持两种类型的数据表:1.CICS-MAINTAINED TABLES(CMTs)。这种表采用与相应的资源数据集同步映像的方式。即对表中数据的任何改变均将在相应的资源数据集中进行反映,同时,对相应资源数据集的任何更改亦将在数据表中予以反映。适应于VSAM KSDS数据集的所有文件访问API均适应于这种数据表,在数据表中不能满足而需参照相应数据集的请求即导致需调用VSAM的API以对相应的数据集进行访问,可将表定义成可恢复的以保证全部的完整性。2.User-maintained tables(UMTs)。这种类型的数据表在其被加载后即与相应的资源数据集完全分离,对表中数据的修改并不能自动地在相应的资源数据集中进行反映。只有部分文件访问的API能够支持这种类型的数据表,可参阅CICS/ESA Application Programming Reference Manual,这种表的交易完整性不能全部予以保障。
CICS的直接对KSDS进行读取的机制:利用READ命令进行读取操作,如果向用户程序的存储域进行读取,可使用READ INTO命令;如果向CICS SET域中进行读取,可使用READ SET命令。当从KSDS中进行读取时,你可以标识其完整的键值以获得唯一的一记录,亦可以说明键值的一部分以对满足条件的第一条记录进行定位,这两种方式通过几个选项来完成:1.GENERIC选项只对键值的一部分进行匹配,在这种情况下必须说明KEYLENGTH选项,以对多少位的键值需要匹配进行说明。2.GTEQ选项,表示你需要这样一条记录,即它的KEY值“大于或等于”你需说明的KEY值。3.EQUAL表求精确匹配。
CICS的直接对ESDS读取机制,读取命令与KSDS一致,而需读取的记录应由RBA来指明,因为在ESDS中一条记录的RBA是不能改变的。
CICS的直接对RRDS读取机制,读取命令是相同的,但记录的定位需通过相对的记录号RRN来完成。
利用路径方式的直接读取,如果一个KSDS或一个ESDS具有一个alternate index 以及一个alternate index path(并在FCT中有一个相应的描述项),你就可以利用alternate index中的一个KEY值对记录进行定位。GENERIC和GTEQ选项在这里仍然可以被应用。如果说明的KEY值不唯一,则读取第一条记录,并产生一个DUPKEY异常条件。
顺序的读取(浏览,browsing)。1.可以通过STARTBR命令来启动一个浏览,以与直接读取同样的方式对一个特定的记录进行定位,然而,STARTBR命令仅对说明了浏览的起始位置,并不实际读取该记录。2.利用READNEXT命令从这个起始点开始顺序地读取记录。每个READNEXT命令完成后,CICS在RIDFLD选项所指定的域中返回该记录的KEY值的全部。3.像对KSDS直接读取一样,记录可以读进用户的区域(利用INTO选项)或CICS的区域(通过SET选项)。4.利用READPREV命令代替READNEXT命令,可实现对记录的反向读取5.在浏临启动后,可以随时改变当前的浏览点,即可以利用RESETBR命令,亦可以利用READNEXT或READPREV命令。6.对于VSAM的情况,重定位仅需简单地在READNEXT或READPREV命令的RIDFLD选项中说明不同的域值即可实现,但其键值类型应与STARTBR或READNEXT相同。7.对于BSAM的情况,只能用RESETBR命令来对记录进行重新定位。9.如果试图在最后一条记录继续浏览,则会引起ENDFILE条件被触发,如果要结束浏览,则需要利用ENDBR命令来完成,在进行修改前必须采用这样的命令,如果不这样。则结果很难预料,可能在交易中导致死锁。10.CICS允许在同一个交易中对同一个文件同时进行浏览,需以REQID选项来区分各个浏览。
CICS对文件记录的修改。为了对一条记录进行修改,应首先利用READ命令并带上UPDATE选项,在应用程序进行修改后,需用REWRITE命令将原记录写入到数据集中。如果没有用到重写及删除命令,在READ UPDATE命令后需要以UNLOCK将该记录锁打开。
CICS对文件记录的删除。1.删除一个单一的记录,*先利用READ UPDATE命令对记录进行定位,然后触发DELETE命令,无需说明RIDFLD选项;*单独启动DELETE命令,并在RIDFLD中指明要删除的记录,但这种情况下可能删除了多条记录。2.删除一组记录,利用GENERIC KEY机制,可对多条记录进行删除,这时必须说明KEYLENGTH的值,如果还说明了NUMREC选项,则被删除的记录数亦将返回到应用程序中。
CICS对文件记录的追加机制,利用WRITE命令对文件的记录进行追加。1.对KSDS的追加,利用WRITE命令,但在RIDFLD中必须对记录的键值进行说明。2.对ESDS文件的追加,记录总是被写入到文件的未尾。3.对RRDS的追加,在RIDFLD中说明文件的相对记录号。4.当向一个固定长度的文件进行追加时,写入的记录长度必须等于文件生成时的记录长度。5.顺序地增加记录,在WRITE命令中采用MASSINSERT选项,可以一次追加多条记录,从而改进其性能。
CICS文件控制命令的诸选项,RIDFLD,INTO或SET,FROM,TOKEN。1.RIDFLD选项,无论对一条记录进行何种操作(读、追加、删除或启动一个浏览),均需说明RIDFLD选项,除非已经作了READ UPDATE操作。然而,在ENDBR,REWRITE及UNLOCK命令中无需此选项,在READNEXT和READPREV命令中,你亦必须包含这个选项以使CICS能够返回记录的标识。2.INTO和SET选项,指定存放记录数据的空间。3.FROM选项,在追加记录(利用EXEC CICS WRITE命令)或修改一条记录(利用REWRITE命令),必须在FROM选项中说明被修改的记录。4.TOKEN选项,…3.1.9.4-1。
避免交易的死锁。1.所有的应用程序,如果它们要对资源进行修改,则应该以同样的顺序,即或者升序或者降序。2.所有启动READ UPDATE命令的应用必须后跟一个不带RIDFLD选项的REWRITE,DELETE或UNLOCK命令以对锁进行释放。3.一组WRITE MASSINSERT命令需以UNLOCK命令做为结束,在UNLOCK命令没有触发前,不要对文件做任何操作。4.在对文件进行浏览时,必须以ENDBR对其进行结束,在此之前不要启动带有RIDFLD选项的READ UPDATE,WRITE,DELETE命令。
文件的标识。包括KEY,RBA,RRN。
CICS的BSAM文件,参阅3.3.1.3-1…。
CICS对DL/1数据库的管理。DL/1数据库由IBM注册的程序(Information Management System/Enterprise System Architecture,IMS,信息管理系统/企业系统结构)进行管理。CICS对DL/1的操作包括两个界面,我们推鉴使用EXEC DLI界面,另一个层次较低的界面是DLI CALL界面。
CICS对DB2数据库的管理。CICS只对DB2提供了一个界面,即EXEC SQL界面。CICS在处理DB2数据库的同时亦可对DL/I进行操作。
CICS的数据通讯,CICS支持与其它应用的通讯,不仅包括与终端的通讯,还包括与其它CICS的region,IMS/DC等。
CICS在数据通讯中的基本术语。1.终端(Terminal),即包括硬件设备,亦可能是仿真终端的一个控制单元。2.逻辑单元(Logical Unit,LU),是数据传输的终极结点,即可以是一个终端,亦可能是主机上的一个应用(CICS region,IMS/DC等),这是一个VTAM的术语。VTAM将不同的通讯叶结点区分为七种类型,类型1,2,3即普通的终端;类型0即可以是一个终端,亦可能是利用非常简单通讯协议的控制单元或处理器。类型4是一个可编程的控制单元,类型6.1和类型6.2(APPC)即程序到程序的通讯,请见CICSESA 3.3 FACILITIES AND PLANNING GUIDE。3.交易(Transaction),即连线交易处理系统,在通常的意义下,交易被理解为两个参与者之间的交互过程;然而,在CICS中交易被赋予特定的含义,它意味着对特定类型请求所执行的处理。一个请求类型往往代表了整个操作过程,就象选择座位一样。应用程序的设计中定义了请求类型,并需在CICS的TRANSACTION defination中予以定义,在定义中需告诉CICS需作的工作,最关键的事情就是先调用哪个程序。交易由交易标识符(Transaction identifier)或交易代码(Transaction Code)来表示,交易代码由一到四位字符表示。4.任务(Task),在CICS中有特定的含义,它是一个特珠交易类型的一个实例,即对一个交易的执行,它对一个特定的数据集进行操作,并针对在一个特定终端上的特定的用户。5.主要设备(Principal facility),CICS仅允许一个TASK与一个终端进行交互,这台终端即是该TASK的主要设备。CICS在其启动一个TASK时即对主要设备进行赋值,TASK在其生存的期间内掌握这台设备,在该TASK结束以前,其它TASK不能使用该设备。如果一个设备需要与另外的设备进行通讯,它不能直接地进行操作,而需生成另外的一个TASK,该TASK以需要通讯的设备作为主要设备,最常见的情况是与打印机的连接。6.附加设备(Alternate Facility)。虽然一个TASK仅能与一个终端进行直接通讯,它也可以与一个或多个远端的系统建立通讯。TASK要求CICS建立与该系统的对话,该系统即成为该TASK的附加设备。
一个CICS的交易是如何启动的?这里有两种方法,即unsolicited input和by automatic task initiation(ATI)。自动任务启动包括:1.一个已经存在的任务要求CICS启动另一个,如START命令,在RETURN命令后面跟随IMMEDIATE选项,以及SEND PAGE命令。2.CICS产生一个任务以监时的数据队列进行处理。3.CICS生成一个任务以通过BMS ROUTE请求提交一条消息。4.初始化一个任务的主要机制还是unsolicited input。当一个用户从当前任务的非主设备上交换信息时,CICS生成一个任务以对其进行处理,这个任务的主设备即上一个任务的非主设备。5.来自于其它系统unsolicited input也以同样的方法进行处理:CICS生成一个任务以对输入进行处理。6.并不是所有的任务均具备一个主设备,由unsolicited input形成的任务均需要一个主设备,而自动启动的任务可能不需要一个主设备,如果有的话,CICS只有当要求的设备对于该任务可用时才对该任务进行初始化。
启动哪个交易?当接受到一个unsolicited input后,CICS将决定怎样做呢?有时,在同一个主设备上的上一个交易会指出对该输入需要做什么,如在RETURN中指定TRANSID选项,如果不能,CICS将输入的前几个字符理解为交易代码。但一般的情况是非常复杂的,其基本步骤如下:0.在终端进行首次输入时,CICS在产生一个任务以对输入进行处理之前,有时会调用一个预备的任务,该任务执行CICS提供的“查询(query)”交易CQRY,该交易使得发送输入的终端发送一组代码,以描述其部分硬件属性-扩展属性、字符集等。1.如果终端是3270并且输入是“print request key”,则由CICS提供的用于屏幕打印的交易CSPP即被启动。2.如果当前具有BMS的全部支持,终端属于BMS支持的终端类型,并且获得的输入是翻页命令,则CICS提供的交易CSPG即被调用以对请求进行处理。在系统初始化时系统定义表中的PGRET,SKRxxxx,PGCHAIN,PGCOPY以及PGPURGE选项定义了翻页的命令。3.如果在终端定义表中的终端定义表示需要利用一个特殊的交易以对所有的终端的unsolicited输入进行处理,则该交易即被启动(该信息出现在TERMINAL定义中的TRANSACTION属性中)。4.如果该终端的前一个任务中说明了RETNRN并在TRANSID中说明了下次应执行的程序,则当该交易结束后指明的交易即被启动。5.如果在输入中加入了功能管理头(attach function management header),则将该头部转换为四位的CICS交易代码,并执行相应的程序。6.如果该终端是3270,并将attention identifier定义成一个交易,则该交易即被执行(需在TRANSACTION定义中以TASKREQ属性来将attention identifier定义成交易)。7.如果前面所有的检测均失败,则输入的最初几个字符被用来标识要执行的交易。所用到的几个字符是在数据流中控制信息之后但在第一个域分割符(field separator character)前的最初的最多四个字符,域分割符在系统初始表的FLDSEP选项中进行定义。8.如果没有这样几个字符,或者是该交易不存在,则CICS不能需执行哪个交易,这时即向该终端发出“invalid transaction identification”消息。
CICS针对终端的API:CICS为与终端进行通讯的应用编程界面包括两组命令,即终端控制命令(Terminal control command)和基本映像支持(Basic Mapping Support,BMS)。其中终端控制命令是最基本的,具有很大的灵活性和较强的功能,但编程量相应增长,如果用它来进行编程,则需在应用程序中建立设备的数据流。而BMS通讯方式处于较高的语言层面,由其对数据进行格式化,你无需关心数据流的详细内容。它易于编程和维护,但其路经较长,且不支持所有的设备。最后,可利用CPI-C和“sockets”调用以与其它系统的终端进行通讯。
3270终端家族。3270是显示和打印终端设备的一个家族,它们都具有一个控制单元,这些控制单元具有共同的属性,并采用同样的数据编码格式以在终端和主机处理器间进行通讯。这种数据格式则被称为是3270数据流。通过引入域(fields)的概念,3270即可作为用户界面,在屏幕上的每个域具有一个起启位置和一个单独的属性,属性如显示的对比度、颜色、是在可在该域键入数值等。有了域,屏幕就象在纸张上填空一样。3270和一般的个人计算机或其它智能工作端的显示屏不同的是,后者为图形设备,而3270则是字符设备(24×80)。CICS不能与图形界面直接进行交互,但可以进行数据通讯,而由图形设备自行安排界面,方法如下:1.可以用SAN的应用到应用的界面,如APPC。2.可以利用CPI-C的“sockets”界面。3.可以在工作站上安装CICS并由CICS的机制进行通讯,甚至可以将应用的逻辑在工作站和主机间进行通讯。4.如果这样做的话,则可在主机(host)上执行特殊的命令、全部的程序或全部的任务。执行远端的命令则称为function shipping,执行远端的程序称为distributed program link,在网上执行整个任务则称之为transaction routing。5.可以通过仿真程序使PC或工作站具备3270的功能。
3270的buffer。主机通过3270的buffer与其进行通讯,它是3270内的一块存储区域,向3270的输出即被传到这块区域中,同时利用这个buffer驱动屏幕的显示和打印机的打印。返过来,键盘输入亦是通过这块区域上传到主机。屏幕上的一个字符位置与3270的buffer的一个字节相对应。当屏幕以域的方式进行存储是,每个域的第一个位置被用于存放域的显示属性,不能用于显示数据(看起来象一个空格)。在原来,一个字节位足以包括域的所有显示属性,但后来,随着显示属性的增多,3270开始利用其内存的位置而不是与域相结合的一个字符位来对显示属性进行存储。1.向3270终端写数据。为了在3270中生成一个显示屏,需向禹3270送出一个数据流,其中包括:*A write command(one byte),*A write control character or WCC(one byte),*Display data(variable number of bytes)。其中WCC和Display data是可以缺省的。在BMS中,由CICS根据SEND MAP和被执行交易的PROFILE生成WRITE命令和WCC的选项;在利用terminal control command时,CICS仍然生成WRITE命令,但需程序编写者提供WCC选项,而且必须将显示数据组织成3270的形式。1.1.3270的写命令。有五条:*Write,本命令将后跟的数据送往3270的buffer中;*Erase/Write,*Erase/Write alternate,这两条命令仍然将后跟的数据送往3270终端,但先需对buffer进行初始化(erase),同时这两条命令亦决定了buffer的大小,如果这个终端具有所谓的alternate screen size性质的话(如果终端具有这样的性质,则它有两个大小,即default size和alternate size,Erase/Write命令利用default size,而Erase/Write alternate需确定alternate size的大小)。*Erase all unprotected fields,本命令将所有的unprotected fields置为空,本命令没有WCC选项。*Write structured fields,本命令将后面的数据解释为3270的结构化的域。Structured fields对于3270的某些高级特性是需要的。1.2.WCC,告知3270终端是否需要:*Sound the audible alarm,*Unlock the keyboard,*Turn off the modified data tags,*Begin printing(if terminal is a printer),*Reset structured fields,*Reset inbound reply mode。在CICS BMS系统中,根据SEND MAP中的ALARM,FREEKB,FRSET及PRINT选项生成WCC,在terminal control commands中,需编程员利用CTLCHAR选项来对WCC进行说明,否则,CICS生成一个蕴含的WCC,告知终端unlock keyboard并trun off the modified data tags。2.在3270终端上显示数据。显示数据中包含显示的字符集以及怎样显示它们的属性。2.1.显示属性。*Field attributes,包括protection(操作员是否可对该域进行修改,有四个选项,在属性字节上点两位:unprotected,numeric-only,protected,autoskip),Modification(是否操作员已对该域进行了修改,在域属性字节中占有一位,通常称为MDT,当操作员在域中进行任何修改时,硬件自动将此域打开,在服务器程序的READ命令中,CICS根据该域决定是否将该域发送,BMS的SEND命令中的FRSET选项关闭所有的MDT),Display intensity(有三个选项,即Normal intensity,Bright,Nondisplay,在域显示属性字节点占有两位)。*Base color(缺省的字符显示色彩为green,如果在域显示属性字节中指定了bright intensity位,则显示色彩的white。在base color模式下,protection和intensity位被用来说明四种色彩,即normal white,red,blue及green。),*Extended field attributes,一般3270终端无此属性。通常,这些属性包括highlighting、outlining、多字符集、双字节字符集的支持等。2.2.数据流中的指令。一个字节点,后跟根据该指令格式化的数据。*****域开始指令SF和带扩展属性的开始指令SFE,前者后跟一个属性字节,然后是数据内容;后者跟两个字节的属性,前一个字者说明定义了哪种属性类型,后一个字节则是属性的值;但在上面的两个指令中,紧跟的是显示的字符数量。*****域修改指令MF,与SFE的区另仅在于该域必须已在终端屏幕上存在,只不过重新发送新的属性和数据以对该属的显示方式或内容进行修改。*****设定buffer地址指令SBA,用于设定当前域在buffer中的地址,除非上次发送已到最后一个字节。本指令后跟随两个字节的地域,可以代表12、14、16bit的地址。在发送SF,SFE或MF指令后,当前的buffer地址为最后一个字节的位置。*****设定属性指令SA,设定在屏幕上占一个字节位的属性,在利用本指令前,需用SBA指令对buffer进行定位。3.从3270终端上读取数据。3270终端包括三组键:Data key,keyboard control key以及Attention key,前两组键由终端硬件进行处理,3.1.而后一组键却表示可以向主机发送数据,如果主机有一个READ指令,则即将数据发送到后台。包括:ENTER,PF(program function),CLEAR,PA(program attention)及CNCL(cancel key,present only on some keyboard models)。除了Attention key引起发送外,下面几种情况亦会引起发送:应用身份卡读取器,使用磁条读写器或手持扫描仪,利用光笔或光标选择一个attention field,将光标移出一个trigger field。3.2.AID(attention identifier),3270将引起发送的attention key进行编码,作为数据流的第一个字节发送到主机,主机根据应用的设计判定用户的操作,如ENTER键表示正常提交,而CNCL键则表示放弃本次操作等。3.3.从3270终端上读数据,有两条基本的命令,read buffer和read modified,无论哪个命令,在发送的数据流中均包括三个字节的read header(一个字节的AID,两个字节的光标位置,CICS在RECEIVE命令后将这两个值放入到EIB的EIBAID和EIBCPOSN中),后面是整个buffer的内容。3.4.内部域的格式(inbound field format),对于terminal control command非常用用。每个域以下面的顺序传送:SBA指令、两个字节的域位置地址、SF指令、域内容。只对非空域进行传送。3.4.非格式化模式(unformatted mode)。如果端未不以域的形式进行组织,则称为unformatted mode,这时,整个屏幕(buffer)如同一个单字符串。对于这样数据的接收,不能用BMS RECEIVE MAP指令,而只能用CICS的RECEIVE指令。
BMS是CICS程序与终端间进行通讯的应用编程界面。它比terminal control有如下的好处:设备无关性,即接受设备无关的指令并转换为设备相关的数据流,亦将设备有关的输入转换为无关的输入。另外,BMS避免了在应用中设计数据的格式化,但是,BMS是针对3270终端的。BMS提供三个层面的支持,即minimum,standard(支持:3270外的终端、文本输出命令、包括磁条读写和逻辑设备编码等的硬件特性、SEND命令的额外选项NLEOM和FMHPARM,其支持的终端类型见5.3.2.2.1)以及full(支持向非自己终端的发送、递增式地产生信息,即用多个BMS SEND命令附带ACCUM和PAGING选项)。
BMS提供三个汇编语言的宏指令(macros)以对MAP进行定义。此外,还有工具软件Screen Definition Facility II(SDF II)可以交互的方式对MAP进行定义,可减小工作强度。BMS本身所提供的三条宏指令是:1.DFHMDF,定义一个单独的域。在这个指令中,需要指明(但无需全指明):1.1.域在屏幕上的位置,利用POS选项,该选项必须说明,用于指定域相对于左上角点的行列坐标;1.2.域的长度,利用LENGTH选项,说明域占有多少个字符,其中不包括属性字节,因此实际域的长度比LENGTH指定的长度大一。最大值为256,允许域折行显示;1.3. 域的属性,通过ATTRB选项1.4.缺省的内容,利用INITIAL选项,用于说明标题或可变域的初始值(此外还有PICOUT和GRPNAME及OCCURS选项,不属于此范畴);1.5.域的显示内容,包括操作员在该域中是否可键入,能键入什么样的字符,是否光标可在该域停留,显示字符的对比度,MDT的值等。1.6.对于某些终端来说,需说明extended display attributes,其中说明色彩、下划线及亮度等。1.7.如果需在程序中对域或其属性进行修改,则需说明域在程序中的名称。2.DFHMDI,定义一个由域所组成的MAP;3.DFHMSD,将一组MAP组成一个MAP组。
MAP的定义语名--DFHMDI,包括如下选项:1.MAP的名称,放在DFHMID的前面。2.用行数和列数确定的大小,利用SIZE选项。3.在屏幕上的位置(可将多个MAP放到一个屏幕上),利用LINE=和COLUMN=选项。4.域的蕴含extended attributes,如果在域的定义中没有特别说明的话。5.发送MAP时的设备控制(如鸣音或锁定键盘),用CTRL选项,发鸣单,则CTRL=ALARM。6.MAP支持的设备类型,如果需使MAP支持多种类型的话。7.名称和长度是必须的,下面是一个例子:QCKMAP DFHMDI SIZE=(24,80),LINE=1,COLUM=1,CTRL=ALARM。
MAP集定义语名--DFHMSD,包括如下选项:1.MAP集的名称,放在DFHMSD的前面。2.所包含的MAP是用作输入、输出还是即可输入又可输出?利用MODE选项,如MODE=OUT。3.所包含数据集的缺省属性。4.缺省的extended attributes。5.在当前的编译中产生物理的还是符号的MAP。6.应用MAP的编程语言。7.用于建立MAP的存储器信息。8.在MAP集的定义最后,应再说明一条DFHMSD宏指令。如DFHMSD TYPE=FINAL。9.在进行编译时无论是生成的physical map set还是symbolic map set,均将各MAP放在一个结构之中。
对MAP进行编译。1.在DFHMSD语名中说明TYPE=MAP,则即要求编译器将其编译成所谓physical map set。CICS在运行时利用物理MAP集确定常数域并确定如何将变量域合并进来,物理MAP集与应用执行程序存放在同一个库中,并需在MAPSET资源定义中进行定义。2.如果在DFHMSD中说明TYPE=DSECT,则经编译将生成一组数据结构,称为符号MAP集(symbol map set),这些数据结构根据LANG语名指明的编程语言的语法进行生成。对每个MAP,生成一个输入的数据结构,称为symbolic input map,还生成一个输出的数据结构,称为symbolic output map。这两个数据结构可以COPY到程序中,以对其中的数据项进行操作。因此如果对MAP定义的任何改变引起symbolic map set变化时,必须对相关的程序进行重新编译。3.如果用SDF II,则可在交互过程中生成这两种数据集。
域的合成--GRPNAME选项:有时,需要对一个显示域中的一个子域进行引用,则利用DFHMDF逐项进行定义,但每项需以GRPNAME选项指定同一个group fields名。不能用OCCUR选项。
域的重复--OCCUR选项:在DFHMDF中利用OCCUR选项,可以将该域重复数次。
发送mapped output:需要下面的步骤以产生mapped output:1.申请一块空间以生成map。2.COPY符号MAP集,由其来定义这块空间的数据结构。3.对其进行初始化。4.将输出数据移入到MAP的数据结构中。5.设置域的属性。6.利用SEND MAP命令,再加上适当的设备控制信息,将MAP写入到屏幕之上。下面是详细的讨论:1.SEND MAP命令。其告知BMS系统:*要发送的MAP名(MAP选项),及MAP放在哪个数据集中(MAPSET选项);*哪里去找MAP的变量数据(FROM选项),以及怎样将它们与MAP中的值进行合并(MAPONLY或DATAONLY)选项。*在数据流中应包含哪些设备控制命令。*光标放在哪里(CURSOR选项)。*发送的信息是已经准备完毕还是需要继续累计(ACCUM选项)。*对于格式化的输出作些什么(TERMINAL,SET及PAGING选项)。2.取得MAP的定义空间。利用COBOL的COPYBOOK或C的INCLUDE,在WORKING STORAGE中获得结构或利用GETMAIN动态获取。关于内存的管理,这里需注意的是DFHMSD路的BASE和STORAGE=AUTO选项,如果两个选项均不用,则MAPSET中的各MAP结构叠加在一起;如果用STORAGE=AUTO选项,则各MAP的结构分开;BASE=xxxx亦使各MAP的结构放在一起,该语句使得在01层包含一个REDEFINES xxxx语句。3.对输出MAP进行初始化。一定将空间初始化为NULLS。4.将各数据项移入到MAP之中。包括数据部分和属性部分。无论对常数(或有蕴含值)的域还是具有变化数据的域,你需将你要改变的数据移入到后缀为“O”的域名之中。5.设置域的显示属性。
在SEND MAP命令中的选项:SEND MAP有很多选项,有些仅用于特殊的设备或BMS的特殊性质。下面是设备控制的选项:1.ERASE,ERASEUP及FRSET。所有命令均对设备buffer内容进行修改,ERASE将整个buffer置为空(x00),如果终端具有变长的屏幕属性,则ERASE变将设定buffer的长度,因此第一次使用SEND MAP命令一般设置ERASE选项。2.ERASEUP(erase all unprotected fields)设定buffer中所有unprotected域的内容(unprotected域即操作员可以改变的域)为空值,在DATAONLY选项中是很有用的。3.FRSET(field reset)选项将buffer中所有域的MDT标志关闭。4.FREEKB(free keyboard)在输出被送往终端时将盘解锁。5.ALARM在终端上进行鸣音。6.FORMFEED,PRINT,L40,L64,L80及HONEOM是用于控制打印的选项。7.选项PRINT,FREEKB,ALARM,FRSET,L40,L64,L80,HOEOM可以用在DFHMDI的CTRL选项中。8.当在SEND MAP中指定选项后,在MAP定义中的选项即行失效。9.可以利用SEND CONTROL命令直接发送控制信息,而无需利用SEND MAP命令。
SEND MAP的其它选项WAIT和LAST:1.当一个任务向终端进行写操作时,一般由CICS进行通讯的调度,而任务继续进行执行。如果要求任务在未完成通讯前进行等待,则利用WAIT选项。2.LAST可改进行性能,它告知CICS本次的SEND MAP是最后一次的输出。
合并符号及物理MAP的选项:1.MAPONLY选项,送出常量或有蕴含值的域,如菜单MAP的输出MAP等。2.DATAONLY选项,一般用于任务的第二次以后的SEND MAP命令时,它只送出在符号MAP中具有非空属性或非空值的域,其它的域保不变。
SEND CONTROL命令。在大量输入时,一屏结束后主机无需送出结果,只需重新对屏幕进行格式化,则需此条命令。如EXEC CICS SEND CONTROL ERASEAUP FREEKB END-EXEC。
设置光标的位置:在送出一个需要输入的MAP后,可以在ATTRB选项中指定IC的值以设定光标的位置。而在SEND MAP中指定CURSOR选项则可以覆盖其值,其它光标放在屏幕的绝对坐标上,如CURSOR(163),亦可以在SEND CONTROL中说明CURSOR选项以指定光标的位置。
RECEIVE MAP命令,其告知BMS:1.哪个MAP被用作对输入的数据流进行格式化,亦即,在屏幕上的数据是什么格式,程序用什么样的数据结构进行存储。2.在哪里找到这个MAP(即MAPSET选项)。3.从哪里接收输入(TERMINAL或FROM选项)。4.是否仅属于大写字符的情况。5.哪里存放格式化的数据(INTO或SET选项)。6.除非使用了FROM选项,BMS即从任务的主设备即相应的终端上读取数据并加以格式化,FROM是TERMINAL选项的代用选项。
BMS读取MAP包括如下几个步骤:1.从屏幕上读取,会得到什么?CICS一般从3270终端上进行读取,当操作员按下ENTER等功能键后进行传输。一般传送MDT为开的域(除非在MAP定义或SEND MAP中在ATTRB中使用了MDT选项),可用查看后缀为L的子域是否为0即可判断是否有输入进来。一般情况下,CICS将屏幕上的所有字符转换为大写字符,可以在RECEIVE命令中指定ASIS来防止这种事情的发生。2.从RECEIVE MAP命令中可以获得的其它信息:引起传输的提交键,在EIB的EIBAID中指定(其常量值在DFHAID中指定,可考贝到程序中);光标的位置,在EIB的EIBCURSR,EIBCPOSN中说明。可以用HANDLE AID命令,如EXEC CICS HANDLE AID PF12(ESCAPE) END-EXEC,则当按下PF12时转到ESCAPE的标号,此命令必须在RECEIVE MAP前进行书写。3.转入错误的处理:通知操作员,在诊断时要对所有数据进行,不要一个域一个域的进行;将数据存储下来,这样操作员就不需全部重新键入一遍;操作员再次上传后再行诊断。4.MAPFAIL及其它的意外错误。*****如果在屏幕上没有可用数据,可者是数据为非格式化的;*****用户键入了CLEAR键或PA键之一。当用户键入PF键时,亦可能引起MAPFAIL,如在屏幕上的任何域的MDT均为OFF,或光标没有在一个可修改的域中。*****以前没有用SEND MAP发送到前端,或RECEIVE MAP与SEND MAP的命令中的MAP不是同一个。*****错误在EIBRESP中被检测并发现。*****EOC条件(end-of-chain),是VTAM错误,用户程序一般不需管。5.格式化其它的输入,虽然RECEIVE MAP命令一般从终端上读取数据,你也可以对来自于非终端的数据进行格式化,或称间接来的。例如,你可能不知道需要使用哪个MAP,除非接收到其一部分数据并对其进行了检测。
利用SEND MAP时的其它一些机制:1.输出处理选项TERMINAL,SET及PAGING。*****TERMINAL是缺省的选项,其将输出送往你任务的主设备。*****BMS可以将格式化的输出流送往一个任务而不是送到终端上,可以利用SET选项以对此进行请求,这样可以延迟输出可对输出流进行必要的修正以符合某些需求。*****你可以要求BMS将你的输出存放在CICS暂存空间中以便稍后提交到你的终端,对应的选项是PAGING,表示你的信息可能包含多于一个的屏幕或页,这时BMS将其存放在暂存空间中,当被指示已经完成后即行提交。2.BMS的逻辑信息,可以利用ACCUM选项一点一点地准备信息,利用PAGING,可以一页页地准备消息,这时BMS即启动一个逻辑的消息,以增量式地进行存储,直到消息结束(5.3.14.2.1-1)。在消息准备完毕后,可以利用SEND PAGE命令将其合成,并根据TERMINAL,SET和PAGING选项进行不同的发送处理,当然,交易最后的SYNCPOINT命令亦作相同的工作。前端操作员可以进行翻页等,可以在连线的情况下以CONVERSATIONAL的方式进行,亦可用PSEUDOCONVERSATIONAL方式,CICS提供的交易代码是CSPG(5.3.14.2.3-1,这时终端需定义为允许CICS自动启动CSPG交易,在TYPETERM中进行定义)。SEND PAGE有两个选项,即RETAIN和RELEASE,如果全不说明,则CICS启动CSPG交易对消息进行管理,然后返回到任务中,如果说明RELEASE选项,则控制不会回到任务中。还有两个选项,即AUTOPAGE和NOAUTOPAGE,NOAUTOPAGE令操作员对页面的传输进行控制,而AUTOPAGE一页一页的送,适应于打印机的情况。3.终端操作员进行翻页,CSPG命令。4.利用PURGE MESSAGE命令可删除逻辑信息。5.BMS将逻辑信息存放在temporary storage中,其队列名称来自于SEND MAP中REQID选项所指定的两个字符的名称,如果没说明,则蕴含为**。6.页面的大小由终端定义中的PAGESIZE或ALTPAGE值所指定。
SEND TEXT,对文本输出进行格式化。如果送往前端的输出只是简单的文本,而不需要屏幕进行格式化以进行进一步的输入,则无需创建一个MAP,BMS提供了一个命令SEND TEXT,它无需通过MAP即可对终端进行格中式化输出。当使用SEND TEXT命令后,BMS将输出分割成屏幕大小的页,显示可以折行,还可以加入头可尾信息。1.SEND TEXT命令:除了不同的格式化类型外,SEND TEXT命令与SEND MAP命令是十分相似的,均利用FROM选项说明位置,而用LENGTH选项说明信息的长度,几乎所有的选项均可以应用到SEND TEXT命令之中,如:*****设备控制:FORMFEED,ERASE,PRINT,FREEKB,ALRM,CURSOR。*****格式化选项:NLEOM,L40,L64,L80及HONEOM。*****目标选项,TERMINAL,PAGING,SET。*****页面控制选项ACCUM。*****功能选项,HEADER,TRAILER,JUSTIFY,JUSFIRST及JUSLAST。*****不能使用的选项,包括ERASEAUP和NOFLUSH。2.Text logicl messages:可以与SEND MAP类似的情况一样利用ACCUM和PAGING选项。3.Page format for text message。5.3.17.3-1。
扩展的SEND TEXT命令,SEND TEXT MAPPED及SEND TEXT NOEDIT。BMS提供这两个特殊的命令,以使你能够应用BMS的信息提交机制。SEND TEXT MAPPED将以前定制的MAP并通过RECEIVE MAP的SET选项获取的MAP发送到任务的主设备。SEND TEXT NOEDIT与SEND TEXT MAPPED相似,只不过其发送的是在程序或其它方法所生成的MAP,而不是BMS生成的MAP。
信息的路由,ROUTE命令。BMS的信息路由机制允许你将消息发送到非主设备的终端上(甚至任务可以没有主设备)。路由并不给这些终端上你的任务以直接的控制,但另启动一个任务,以调度信息提交的终端。消息路由对于消息的开关及广播及打印是非常有用的。它是CICS提供的交易CMSG的基础,利用它,终端用户可以将消息发送到其它的用户或终端,ROUTING功能包括下面几个部分:1.为了说明消息的路径,需启动ROUTE命令。在其中需告知BMS消息发送到何处,什么时间提交,出现错误怎么办,及其它一些详细的事情。然后是需发送的信息,信息可以是MAPPED或TEXT,但必须是逻辑消息(因些由ACCUM或PAGING来生成)。ROUTE命令一旦起动,将一直起作用,直到用SEND PAGE命令将其结。束,亦可以用PURGE MESSAGE将其作用结束掉。2.说明信息的目的地,可以用三种方法说明你的路由信息的目的地。*****可以要求某个操作员的类可以接收到路由信息,这就需要在ROUTE命令中说明OPCLASS选项。用户相关的类可以在RACF用户定义中说明或在CICS sign-on table entry中说明。*****可以在路由表中说明接收消息的特定用户,这就需用在ROUTE命令中应用LIST选项。操作员由三个字符的OPIDENT值所标识,其亦在RACF用户定义中说明或在CICS sign-on table entry中进行说明。*****你可以指定一些特定的终端以接收信息,这也需要在路由表中进行说明。终端由四个字符的TERMID值,以及两个字节的逻辑设备编码(指定终端的类型)。1.合法的终端(Eligible Terminals)。为了对一个特定的目标正确地格式化信息,BMS需要知道正在格式化的终端的特性。因此,在产生一个路由表时,第一步就是将你的一个终端表,以便进一步向这些终端输出信息。这样“eligible terminals”即将路由表中的信息与ROUTE命令中的OPCLASS说明相结合。进一步,当你的消息准备提交后,BMS利用这个表以确定哪些终端可以接收你的消息。*****无论是表创建还是在信息提交时刻,BMS均被限制于安装于其自己CICS域中的终端定义中。*****在一个多域环境中,有可能一个域所知道的终端在另一个域中是不可知的。特别地,如果终端的定义是在域间共享的(通过设置SHIPPABLE)。2.以OPCLASS说明的目的地。如果没有用到路由表,只进行了OPCLASS说明,BMS在local systemR 描绘所有的终端定义,任何满足条件的终端将成为合法终端。扫描在下面的类型中进行:*****该终端是BMS可支持的类型,*****The terminal can receive routed messages not specifically addressed to it(ROUTEDMSGS(ALL)in the terinal definition),*****在该终端上已经有一个操作员登录。*****该操作员属于在OPCLASS表中所指定的操作员特性。3.OPCLASS和LIST选项均被省略,则满足上面前两条的所有终端均可获得消息。4.当提供路由表时。*****如果表项包含了一个终端标识符但没有操作员标识符,则终端进一个扫描eligible list,看一看其是否已被定义,或其类型是否由BMS支持,以及是否能够接收路由信息,如果BMS不能找出终端的定义,其将在路由表项的状态标识中设置“entry skipped”及“invalid terminal identifier”位,如果终端存在但不被BMS支持或不允许接收路由信息,则也进行适当的设置。*****终端接收路由信息的合法性通过终端定义中的ROUTEDMSGS选项来定义。*****如果表项中即包含了终端亦包含了操作员的标识符,则终端标识符象没有操作中标识符一样被检测,这时,消息是否被提交到终端上就要看操作员是否已在这个终端上进行登录。如未登录,则BMS在状态位中置相应的错误信息。*****如果表项项只包含操作员标识符,BMS到终端定义表中扫描,直到找到该操作员所登录的终端,如果该终端的类型BMS不支持,或该终端不能接收路由消息,BMS则在状态位中适当置值,如果存在,则亦在路由表中填充终端的标识符。如果终端是适当的,则BMS将表格视作你说明了终端亦说明了操作员标识,如上面的情况一样进行处理。如果该操作员没有在任何地方定义,BMS将在状态位中设置错误信息。CICS提供关于路由表的标准源文件,其名称为:DFHURLDS,可以用COPY或INCLUDE嵌入到自己的程序之中。5.提交的条件。信息在适当的时候提交,大多数情况是在以后,依赖于在ROUTE命令中的调度选项(INTERVAL,TIME,AFTER及AT)。你也可以立即提交,或者时在一段时间以后,或者是在一天的某一个时刻。在消息被提交到任何特定终端以前,所有前面叙述的相关条件必须被满足。6.在以PAGING选项生成和提交路由信息过程中,BMS将消息存放在CICS的暂存空间中。尔后,你可以通过说明REQID选项使得路由消息是可以恢复的。
如何去定义分区(partitions)。用汇编的宏语名去定义一个分区集,就如同对于MAP SET一样。有两个语句,即DFHPSD和DFHPDI。1.分区定义以DFHPSD宏开始,其中定义了:1.1.分区集的名称。1.2.屏幕的大小(BMS保证分区的viewports不超过所有的可用空间)。1.3.蕴含的Character cell size。1.4.分区集名的后缀。2.在用DFHPSD宏以后,可以用DFHPDI来定义每个分区。2.1.在分区集中分区的标识符。2.2.分区在屏幕上的位置。2.3.其viewport的大小。2.4.与viewport相结合的表示空间(即所分配的buffer space的数量)的大小。2.5.所使用的字符的大小。2.6.与该分区相结合的MAP SET的后缀,用于选择适用于分区大小的MAP集。2.7.分区是否可以接收CICS的错误信息。3.利用DFHPSD宏来终止分区集的定义,其仅能包含唯一的选项TYPE=FINAL。4.在对分区数据集进行定义后,即可以利用编译和连组程序对其进行编译,导出的可加载模块可以放在与你的MAP集相同的库中。你的系统工程师亦需要利用PARTITION定义将每个分区集定义到系统之中。5.3290的字符大小。3290的硬件使你可以使用最多八中不同的数据集。两种由硬件实现,其它六种可以通过SEND命令加载到终端之上。每个字符占据了屏幕上的一个单元,cell,其大小由象素pel度量。一个分区占用多少字符由在DFHPDI或DFHPSD中由CHARSZE来指定。6.建立分区。你可以在TRANSACTION定义中利用PARTITIONSET选项告诉BMS哪个分区集需要加载到一个特殊的交易中。你可以直接告诉BMS不改变分区的当前状态(PARTITIONSET=KEEP选项),或者你自已将分区加载进来(PARTITIONSET=OWN选项)。无论与一个交易的PARTITIONSET的值是什么,一个任务可以利用SEND PARTNSET命令实时地建立一个。7.BMS SEND命令中的分区选项。当你向一个已分区的屏幕上进行写操作时,只能向一个分区中进行输出。你可以在MAP定义中利用PARTN选项或在SEND MAP中指定OUTPARTN选项以说明输出的分区。这里OUTPARTN覆盖PARTN选项,如果均未说明,则BMS选择分区集中的第一个分区。8.确定活动分区。当向一个分区中进行输出时,你可以将光标在分区中进行移动,在MAP定义中PARTN选项中的ACTIVATE选项指定了活动的分区。如果在BMS SEND命令中说明了ACTPARTN选项,则覆盖了前面的选项,活动分区得以重新指定。在实时操作中,用户可以将光标在分区间相互移动,从而指定活动分区,亦可以利用JUMP KEY来指定分区。9.在BMS RECEIVE命令中的分区选项。通过在MAP定义中以INPARTN选项或在RECEIVE MAP命令中利用PARTN选项,可以告知BMS从哪个分区中接收数据。10.不能利用ROUTE功能将一个逻辑的消息写到多个分区中。BMS在路由环境下BMS SEND 命令中将忽略OUTPARTN和ACTPARTN选项。11.使用CLEAR PARTITION键可以清除活动的分区,就如同CLEAR键一样,在RECEIVE MAP后,其值将包含在DFHAID中。12.意外的条件值。如INVPARTN和INVPARTNSET以及PARTNFAIL。13.终端的共享。经过适当的计划,你可以在多个进程间共享一个终端,所采用的方法即对每个进程分配一个分区。当然,你不能在一个终端上同时运行多个任务,但你可以利用pseudoconversational交易模式交替地运行每一个任务。
逻辑设备组件(LDC-Logical Device Components)。逻辑设备组件是另一类特别的硬件,BMS给予支持,如同分区一样,LDC需要标准的BMS。一个支持LDC的终端是一种具有多个功能部件(logical device)的设备,只不过通过一个逻辑单元(logical unit)进行控制。这些组件可以是一个打印机,一台读写器,键盘或显示器。由于逻辑设备是CICS的唯一入口,只不过具有独立读写的多个组件构成,因此CICS针对LDC终端的编程界面看起来与分区终端相似,每个LDC对应于一个分区集中的一个分区。当然,还存在很多差别,你需要认真查阅CICS的手册,以找出描述你特定类型终端的CICS支持。1.定义逻辑设备组件。一台终端的逻辑设备组件由一个LDC表所定义。在TERMINAL定义中的TYPETERM组件指向了这张表,它可能对于一个逻辑设备是唯一的或由多个逻辑单位所共享。这张LDC表本身又需在DFHTCT TYPE=LDC宏(Terminal Control)进行定义。对于逻辑单元的每个逻辑设备组件,一个LDC表包含下面的信息:*****两个字符的设备标识符,一般是标准的缩写,如CO表示显示器,MS表示磁条读写器。*****一个字符的设备代码,表示这个设备的类型。*****BMS的页面大小。*****BMS的页面状态。2.将数据送往一个逻辑设备组件。你可以直接向一个终端的特定的逻辑设备组件发送BMS信息,方法是在SEND MAP,SEND TEXT和SEND CONTROL命令中利用LDC选项,其中给出该逻辑组件的名称。3.LDC及逻辑信息。当你为自己的终端建立了BMS逻辑信息后,你可以将信息的页分布在不同的逻辑设备组件上,其方法就象将逻辑页分配在不同的分区中一样。BMS为每个逻辑设备组件单独地积累信息。当接收到页面后,操作员需要LDC提供响应,因为并不是所有的设备均有键盘。如同在分区的情况一样,PURGE请求将删除所有的信息。4.LDC及路由功能。LDC环境支持路由功能,如果消息被发送到同样的组件类型的话。可用下面方法之一说明LDC的值:*****如果在ROUTE命令中使用LDC选项,则所提供的值将覆盖所有其它资源中的定义。*****如果你在路由表项中说明了一个LDC(但在ROUTE命令中没有说明),则该值被用于相应的目的地(如果在ROUTE中也进行了说明,则以ROUTE为先)。*****如果均未说明,则LDC的值要从终端及系统的LDC表中获得。
CICS中的可检测的域。必须在域定义中说明ATTRB=DET以使该域成为可检测的。而域数据的第一个字符则称之为设计者的字符,必须是五个特定的字符之一。可检测域有两种,即选择域(selection fields)和注意域(attention fields)1.选择的域。其类型由设计者字符所决定。选择域由一个设计者的字符或问号或大于号进行定义一般的惯例是问号表示操作员没有选择,而大于号表示已经进行了选择。当操作员按下这些符号时,域中的值逐个切换到其下一个值。2.Attention域。
终端控制命令。这里的命令只适用于启动交易的主设备。设备控制命令可以分为四组:基本的数据传输命令RECEIVE,SEND,和CONVERSE;发送设备控制的命令,用于对传输进行同步,终止一个session或执行类似的控制功能;告知你的终端的命令ASSIGN和INQUIRE;特殊设备分组的命令,批量数据相互改变的命令。1.数据传输命令。有三个命令可以向终端或逻辑单元发送和接收消息,这些终端或逻辑单元必须是任务的主设备:RECEIVE,SEND,CONVERSE(先向终端上写数据,等待输入并读取输入,相当于发送SEND命令后再跟一个RECEIVE)。2.终端和逻辑单元以半双工的方式进行工作,即在任何时刻,对话的参与者的一方处于发送状态,而另一方则处于接收状态,只能在VTAM通讯方式下才能采用这种方式。3.对于终端的争用。如果一个交易在结束时启动一个ATI(自动启动交易),而同时用户在终端上又要求一个unsolicited交易,则引起对任务主设备的争用,在这种情况下,CICS总是保证unsolicited交易的优先级。4.RETURN IMMEDIATE。有时应用需顺序地执行一组任务,而无需用户干预,在这种情况下,就需要利用RETURN IMMEDIATE命令,可以在TRANSID选项中指定下一个要执行的交易,甚至可以向下一个交易传送数据,下一个交易通过RECEIVE命令进行接收。就这样一个接一个地执行,而这时键盘不能对用户开放。5.Speeking out of turn。对于用户来说,他一般很清楚什么时候在发送,什么时应该接收,在3270终端时,甚至在进行发送后将终端进行锁定以增强这种效果,即发送键盘一至锁定,直到主机发送SEND命令时将其解锁。这是一种协议,在VTAM通讯模式下,不满足这种协议将使得该任务即中断(终断代码为ATCV),除非先读队列(read-ahead queueing)起作用。Read-ahead queueing允许逻辑单元及任务可在任何时刻发送与接收数据。CICS将数据存放在暂存队列中,直到任务需要它们的时候。任务没有用到的输入则被放弃。它仅用于类型4的设备,允许一个交易支持BTAM和VTAM的连接方式。6.中断。VTAM和BTAM均提供一种机制,使得一台终端在接收状态下可以告知其参与者它准备发送信息。这是VTAM中的“信号”数据,其可以在任务的下一个SEND,RECEIVE或ISSUE DISCONNECT命令中被检测出来,这时,CICS产生一个SIGNAL条件并置EIB中的EIBSIG的值,对于这个条件,CICS的蕴含动作是将其省略,应用程序可以利用这个条件值改变对话的方式。在3270的显示终端上,ATTENTION键即能产生这样的信号。7.终端的等待。如果在SEND命令后没有说明WAIT选项,则CICS可以将传输进行推迟以优化整个终端处理的情能。这时CICS将输出进行存储,并使你的任务是可调度的,因此可以重新执行。此外,ISSUE COPY和ISSUE ERASE命令起类似的作用。如果使用了WAIT选项,CICS将挂起你的交易,直到传输完成成功,也可以在尔后利用WAIT TERMINAL命令以等待输出的完成。
CICS的管理功能
时间区间控制(interval control)。提供了一些与时间有关的函数:1.可以在以后的特定时刻或过一特定的时间而启动一个任务,并将数据传输给它(START命令)。2.通过RETRIEVE命令获得传输的数据。3.通过DELAY命令暂停一个任务的处理。4.当一个特定的时间过后请求一个通知POST命令。5.等待一个事件的出现,利用WAIT EVENT命令。6.利用CANCEL命令终止前一个时间区间控制命令。7.请求当前的时间的日期(ASKTIME命令)。8.选定日期和时间的格式(FORMATTIME)命令。9.不要使用EXEC CICS START TRANSID() TERMID(EIBTERMID)去启动一个远程的交易,而应该利用EXEC CICS RETURN TRANSID IMMEDIATE命令,利用START的方式,会不合理地占用系统的资源,并降低系统的性能。需要注意的是当使用WAIT EVENT,START,RETRIEVE命令并带有WAIT选项后,以及使用CANCEL,DELAY和POST命令,则可能产和交易间的姻亲关系(affinities),可能对动态交易的路由功能产生不良的影响。下面是这些命令的详细解释:1.Expiration time。或以说明绝对的时间,用TIME选项;可以说明相对的时间,利用INTERVAL选项;对于DELAY命令,可以利用FOR和UNTIL选项,对于POST和START命令,可以利用AFTER和AT 选项。如果说明了绝对时间,而时间在当前时间之前,则该任务立即启动。如果即没有说明TIME也没有说明INTERVAL,则该任务立即启动。2.请求的标识。对于每一个DELAY,POST和START命令,CICS赋予它们一个唯一的标识,即标识该请求,亦标识与其相应的数据。如果在尔后需要CANCEL掉该请求,则需要利用REQID选项说明该标识。3.任务控制。CICS的任务控制机制提供了同步任务活动的功能,或利用系统资源的功能。CICS根据其系统程序员所设定的值对交易赋予优先级。CICS的任务控制可以使你:*****挂起一个任务(利用SUSPEND命令)。*****调度在一个任务中的资源的使用(利用ENQ和DEQ命令)。对于防止一个资源被多个任务并发调用是很有用的。亦即,使得资源被顺诹的使用。每个要利用资源的任务启动一个入队命令ENQ,利用资源的每个任务均需发出一个出队的命令(DEQ),如果它已完成资源的占用的话。*****利用CHANGE TASK PRIORITY命令改变优先级。*****利用WAITCICS和WAIT EXTERNAL,可使启动的任务挂起,直到一个ECB(Event Control Block)被提交,亦即,要等到该事件的出现。它可以等待一个或多个事件的出现,如果等待多个事件的出现,则其中之一即可使其被提交。4.程序控制。CICS的程序控制机制控制着在一个CICS系统的应用程序间的控制流程。可以利用程序控制命令干下面的一些事情:*****将你的应用程序连接到其它程序(利用LINK命令),执行后将控制返回到调用程序,利用COMMAREA和INPUTMSG选项将数据传到你的应用程序。*****将你的程序连接到不同CICS分区的程序,被调用的程序将返回到调用的程序。这称为分布式程序连接(DPL)。*****将控制从你的一个应用程序转到另一个应用程序,但不返回到调用的程序之中(XCTL命令)。这时COMMAREA和INPUTMSG选项允许数据传输到被调用的应用程序。*****将控制从一个应用程序返回到其它程序,RETURN命令。这时,COMMAREA及INPUTMSG选项可使数据传到新启动的命令。*****利用LOAD命令将设计的应用程序、表格及MAP加载到系统之中。*****如果在LOAD和RELEASE命令中利用HOLD选项以加载一个程序、表格或MAP,而它们均不是只读的,则可能导到交易间的姻亲性。*****利用RELEASE命令删除被加载的应用程序、表格或MAP。4.1.应用程序的逻辑层次。程序之间的调用关系构成了程序的逻辑层次。4.2.连接到另一个程序并返回。在被连接的程序中要以RETURN返回到连接程序。4.3.向其它程序中传送数据。当你利用程序控制命令将控制转交到其它程序时,可以利用下面的方法将数据传送到其它程序。4.3.1.利用COMMAREA。可以在LINK、XCTL和RETURN中利用COMMAREA将数据传送到被调用程序,该程序利用参数的形式来接收数据,在COBOL程序中,必须包含DFHCOMMAREA域。而该域的不一定非要与传送的数据域长度相等。在EIB中的EIBCALEN域中包含了传送的数据块的长度,如果没有数据块传送,则该块的长度应为0;另外,在LINK、XCTL、RETURN中如果说明了LENGTH选项,则在EIBCALEN的值将设定为该长度,而不管数据块的长度为何。被调用程序可以利用EIB中的EIBFN域来确定命令的类型。4.3.2.利用INPUTMSG。在LINK,XCTL和RETURN命令中可以利用INPUTMSG选项来说明向被调用程序中所传输的数据,所不同的是,在这种情况,被调用程序必须用一个RECEIVE命令来接收数据。这个选项使你能够与从端未获取数据同样的方式接收数据。4.3.3.在RETURN命令中使用INPUTMSG选项。这里必须在最高的逻辑层调用RETURN命令,并且必须说明IMMEDIATE选项。如果不说明IMMEDIATE选项,则下一个从端未的输入会覆盖INPUTMSG的消息,因此可能会丢失。4.3.4.用其它方法传送数据。可以用其它方法在应用程序间传送数据。例如,数据可以存放在CICS的存储域中,而不存放在应用程序的局部环境中,例如可存放在交易工作空间(TWA)中,另外的方法是将数据存放在暂存空间中。
CICS的内存控制。CICS的内容控制机制控制着对内存申请的请求,以提供媒介型的工作空间及处理一个交易过程中的其它所需的内存。CICS使得工作空间在每个命令层的程序中自动可用,而不需要在应用程序中的特殊的请求,并提供媒介内容的其它机制,可以在任务之内,亦可以在任务之间。可以通过GETMAIN和FREEMAIN以获得和释放空间。利用在GETMAIN中说明INITIMG选项的方法,可以将所获得的内容空间初始化成任何的字节位组合。当任务结束后(正常或异常),CICS将释放掉与之相诮的所有内容,除非在GETMAIN中使用了SHARED选项。如果使用了GETMAIN命令并带有SHARED选项,然后再使用FREEMAIN命令,则可能引起交易内部的姻亲关系,从而影响到执行动态交易路由的功能。如果在你进行申请的时候没有空间可用,则CICS会挂起你的程序,除非说明了NOSUSPEND选项。当一个任务被挂起后,可能会因超时而被CANCEL掉,如果在交易定义中说明了SPURGE(YES)或DTIMOUT(mmss)项的话。1.内容保护的概念。内容保护可以保护CICS的代码或控制块以防被应用覆盖,而交易的隔离则在任务之间相互保护。CICS/ESA 3.3利用ESA/390子系统的内存保护机制,其方法是使你能够保护CICS代码和控制块不会意外地被你的应用程序所覆盖。但它不会对经过深思熟虑的故意对CICS代码和控制块进行保护。CICS不能防止一个应用对修改CICS内存所进行的必要访问。交易的隔离扩展了这种内存保护机制,以对交易数据进行保护。应用内存保护机制是可选的。2.术语。当使用内存保护机制时,CICS/ESA 4.1将内存分成两类:2.1.CICS关键内存(CICS-key storage),主要用于对CICS的代码的控制块进行保护,在安装时,亦可指定其它代码和数据被保护。在一个CICS域中,如果交易隔离的机制被激活,则CICS关键的程序对于CICS-key和user-key的内存具有读写能力。2.2.用户关键内存(user-key storage),是应用程序及其数据域所驻留的区域。2.3.选择一个应用的执行键(Selecting the execution key for applications)。在蕴含的情况下,应用程序被给定了在user-key域中执行,而系统程序员所编写的程序(一般是提供一个特定功能,而不是用户的应用)可能选择CICS-key域进行执行。2.4.定义执行键值(Defining the execution key)。为使你的应用程序能够在CICS键域中执行,你需要在一个程序的资源定义中使用执行键参数(EXECKEY)。2.5.Selecting and defining the storage key for applications。可以选择程序和数据所驻留的关键域。2.5.1.系统级的内存域。对于CICS的每个域,可以选择在CICS键或用户键以存放CWA(common work area)以及终端控制表用户域(TCTUA),这由系统的初始化参数CWAKEY和TCTUAKEY分别来定义,一般是安装在用户KEY域中。2.5.2.任务生存期的内存,可以在交易定义中利用TASKDATAKEY选项来指定其位于用户关键域还是CICS关键域,这样影响到下面的区域的分配域:*****交易工作空间(TWA)和EXEC界面块(EIB)。*****在各个应用程序执行时CICS获得的工作空间考贝。*****通过GETMAIN命令直接获得的空间,以及执行CICS命令所获得的蕴含空间(通过SET命令)。3.决定说明什么样的执行和存储键值。用户应用的大多数程序及数据运行在user-key域;只需在程序定义中利用EXECKEY(CICS)并在相应的交易定义中指定TASKDATAKEY(CICS),则可将其放入到CICS-KEY域中进行执行。4.内存保护的异常条件码,发生错误时将产生ASRA异常条件码。5.利用交易的隔离机制。可以在整体上(CICS的域中)利用交易隔离机制,只需在系统初始化参数中指定TRANISO选项,对于单个的交易,在交易的资源定义中指定ISOLATE(YES OR NO)选项。
临时数据控制(Transient data control)。CICS的临时数据控制机制提供了一个一般的队列机制。数据可以入队以供后继的内部可过程处理。在应用程序中所选定的数据,可以向或从事先定义的符号目的地写入或读出,即可者是intrapartition(分区内)或者是extrapartition(分区外的)。这里所谓分区内指与CICS的区相结合的机制,而分区内则指在CICS分区之外。*****可以利用WRITEQ TD命令向临时数据队列中写数据;*****从临时数据队列中读数据,用READQ命令;*****用DELETEQ TQ命令删除内部分区临时数据队列。1.内部分区队列。内部分区在直接访问存储设备上的数据,这些数据可以被作为单独任务的一个或多个程序所使用。向这些内部目的地读或写的数据被称为内部分区数据;其可以包含变长的记录。内部分区的目标可以与一个终端或一个输出数据集相结合。内部数据最终可以根据请求向目标终端进行传输,或顺序地从输出数据集中检索。内部数据的典型应用包括:*****Message switching;*****Broadcasting;*****Databasee access;*****Routing of output to several terminals;Queuing of data;Data collection。2.外部分区的目标。外部分区目标以驻留在任何顺序设备(DASD,磁带及其它)上顺序数据集的形式的队列,这些数据集被CICS区外的程序所访问。一般来说,顺序的外部目标被用于对CICS区域外的数据进行存储和检索。例如,一个任务可以从一个远程终端中读取数据,编辑数据,并将结果写入到一个数据集中,以供在其它分区中进行后续的处理。登录数据,统计以及交易的错误信息都可以可以写入到外部分区目标中的数据的例子。一般来说,由CICS产生的外部数据是为非CICS程序的后续批量输入准备数据。数据亦可以向诸如打印机等输出设备上传输。向外部目标交换的数据被称为外部分区数据,其包含顺序的记录,这些记录可能是固定长度的或可变长的,可以是组块的亦可以是不组块的。外部分区目标的记录格式必须由系统程序员在DCT中进行定义。注意意不能对外部分区队列进行删除,如果这样做的话,则导致了一个INVREQ的错误信息。3.非直接的目标(indirect destinations)。内部和外部分区的目标都可以被用作非直接的目标。非直接的目标提供了某些灵活性,特别是在仅利用一个DCT即可以对数据向一个或多个目标进行传输的管理上。当DCT被改变时,应用程序继续利用原来的符号名称将数向队列中交互;然而,这个名称现在是一个非直接的目标,其需要引用新的符号名称。因为非直接队列利用临时数据资源定义而建立,应用程序员不需关心是怎样做的。关于临时数据资源定义的进一步信息可参见CICS/ESA Resource Definition Guide。4.自动的交易启动(Automatic transaction initiation,ATI)。对于内部分区的目标,CICS提供了自动交易记启动的选项。系统程序员通过说明对一个特定的内部分区目标的一个非零的触发层来建立ATI的基础(DFHDCT TYPE=INTRA宏)。当在队列中的数据超过这个数值时,则在DCT中定义的程序即被启动,以对队列中的数据进行处理,而在处理后需反复利用READQ TD将队列中的记录删除。当在被启动程序删除所有的队列记录之前,该队列禁止被访问。如果队列是逻辑上可恢复的,则触发交易的启动被推迟到下一个同步点(syncpoing)。5.临时空间控制(temporary storage control)。CICS的临时空间控制机制向应用程序员提供了将数据存放在临时空间中的能力,这些临时空间或者在主存中,或者在直接访问存储设备上。存放在临时空间队列中的数据被称为临时数据。你可以:*****利用WRITEQ TS命令将数据写入到临时空间队列中。*****利用WRITEQ TS REWRITE命令修改临时空间队列中的数据。*****利用READQ TS命令读取临时空间中的数据。*****利用READQ TS NEXT命令读取临时空间中的下条记录。*****利用DELETEQ TS命令删除临时空间中的数据。TS关键字是可选的。5.1.临时空间队列。临时空间队列由最多八个字符来进行标识,由原始任务进行定义。临时空间中的数据可以由原来的任务,亦可以由其它任务根据其符号名称进行读取。临时空间中的队列能够保持完整性,除非由原来的程序或其它程序将其删除。TS可以放在主存中,但不是可恢复的,可以放在辅存中,则可以进行恢复。5.2.临时空间控制的典型应用。只有一条记录的队列可以被当作单一的数据单元来对待,可以用其符号名进行访问。临时空间控制的这种应用提供了一个典型的擦写板功能。这种类型的空间可认利用READQ TS命令并带上ITEM选项来进行访问,否则会产生一个ITEMERR的错误代码。一般来说,具有多条记录的临时空间队列仅当需进行直接访问或重复的直接访问时才是需要的,transient data control提供了对顺序数据集的更有效的访问机制。临时空间的一些用法如:*****终端翻页。*****挂起的数据集,用于非同步的方式进行在终端上的数据采集。*****预打印的FORMS。即不断收集数据,一次进行打印。
安全控管。可以让一个应用去确定对终端用户的安全授权,可以利用QUERY SECURITY命令来做此工作。1.QUERY SECURITY命令。对于RACF(Resource Access Control Facility)和ESM(External Security Manager)是有效的。可以利用些命令去查询是否一个终端用户对于已经在外部安全管理器(ESM)中定义的资源具有访问权限。可以是:Resources in CICS resource classes,Resources in user-defined resource classes。发出QUERY SECURITY命令后,CICS返回关于终端用户安全权限的信息。CICS是从ESM中获取这些信息的。可以利用CICS资源类型的名称说明资源的类型,如对文件,则写RESTYPE(’FILE’)。而在此类型中的一个特定的资源,则需在RESID参数中进行说明。1.1.1.利用QUERY SECURITY命令。QUERY SECURITY命令的典型应用是检查是否一个用户具有使用一个特殊交易的权限,然后才在屏幕的菜单中显示交易的代码。1.1.1.1.在一个记录或一个域的级别上使用安全防范。一般CICS的资源安全检查是处于文件资源一级,为对一个单独的记录进行访问,可对一个单独的域进行访问,可以利用QUERY SECURITY命令。为此目的,你的安全管理者可以定义资源元文件(profile name)的名称,对于你想保护的记录或域授予适当的访问权限。这个元文件由安全管理员在用户资源类中进行定义,而非在CICS的资源类中进行定义。对了对资源和类进行QUERY,QUERY SECURITY命令可以利用RESCLASS和RESID选项。1.1.1.2.CICS定义的资源标识符。除了对SPCOMMAND资源类型外的所有情况,资源标识符均是由用户定义的。然而,对于SPCOMMAND类型,其标识符是由CICS固定的。1.1.1.3.SEC系统初始化参数。对SEC系统初始化参数的设定影响到QUERY SECURITY命令返回的CVDA值。1.1.1.4.程序蕴含。1.1.1.5.非终端交易的安全性。这些交易具有三种类型:*****由START命令启动但没有说明终端ID。*****由于内部分区临时数据队列的触发级别所触发的交易。*****CICS的内部交易(CPLT),其在CICS启动时运行,以执行在程序列表PLT中的程序。这个程序可以在PLT的第一个阶段或第二个阶段执行。当然,资源安全检查亦可以在CICS shutdown时启动。
名词解释:EIB-Execute Interface Block;FEPI-Front End Programming Interface;RDO-Resource Definition Online;EDF-Execute Diagnostic Facility;CECI-CICS Execute Command Interpreter;CEBR-CICS Browse Temp Storage;DIB-Data Interchange Block;SDF-Screen Definition Facility;CWA-Common Work Area;TWA-Transaction Work Area;ECB-Event Control Block;TCA-Task Control Block;DPL-Distributed Program Link;DTP-Distributed Transaction Processing;CPI-C:Common Programming Interface Communications;EXCI-External CICS interface;URM-program autoinstall user-replaceable module;CMT-CICS-Maintained TABLE;UMT -User-Maintained Table;WCC-Write Control Character;MDT-Modified Data Tag;LDC-Logical Device Components;
CICS资源定义表:PPT-Processing Program Table;TCTTE-Terminal Control Table Entry TCTTE;FCT-File Control Table;DCT-Destination Control Table;CSD-CICS System Definition File;