CICS -- TD瞬时队列 TS临时存储 详细说明.doc

上传人:s9****2 文档编号:560852935 上传时间:2022-12-28 格式:DOC 页数:14 大小:414.01KB
返回 下载 相关 举报
CICS -- TD瞬时队列 TS临时存储 详细说明.doc_第1页
第1页 / 共14页
CICS -- TD瞬时队列 TS临时存储 详细说明.doc_第2页
第2页 / 共14页
CICS -- TD瞬时队列 TS临时存储 详细说明.doc_第3页
第3页 / 共14页
CICS -- TD瞬时队列 TS临时存储 详细说明.doc_第4页
第4页 / 共14页
CICS -- TD瞬时队列 TS临时存储 详细说明.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《CICS -- TD瞬时队列 TS临时存储 详细说明.doc》由会员分享,可在线阅读,更多相关《CICS -- TD瞬时队列 TS临时存储 详细说明.doc(14页珍藏版)》请在金锄头文库上搜索。

1、CICS 应用编程 - 8 1、CICS queues (队列设施) 有时候CICS应用的程序间可能需要传递超过32K的数据,此时COMMAREA就无法完 成,通常我们用队列来过渡进行程序间大量数据的传递. CICS中有两类队列:瞬时数据队列(TDQ) 和临时存储队列(TSQ). TDQ - Transient Data QueueTSQ - Temporary Storage Queue1.1 Two CICS services Temporary storage control- Provides a simple way to store data outside the working

2、 storage area of a program. The data is stored in simple files called Temporary Storage Queues, Data will be lost if CICS is shut down. Transient data control- Provides a convenient way to use sequential files called Destinations to store data. Records written to a destination are added to the end o

3、f the destination. Records are read sequentially from a destination and then deleted. 瞬时数据队列(TDQ)又分为两种: 内部(Intrapartition transient data)瞬时数据队列 外部(Extrapartition transient data)瞬时数据队列 队列在CICS中又称为目的地(Destination). 内部TDQ的所有队列的元素(数据项)存储在一个特定的VSAM数据集中,这个数据集由CICS进行管理,它只能被 CICS访问,它在CICS启动的JCL或PROC中用DD语句指定

4、,一旦CICS启动后它就被CICS独占,其它批处理程序 (batch)是不能直接访问的;而外部TDQ的每一个队列是一个单独的顺序数据集,由用户或管理员用CICS的资源定义工具,如CEDA,定义到CSD文件中去.它允许在不出现冲突的情况下同时被CICS程序和批程序读取. 瞬时数据队列TDQ允许写到队列中的数据被另外一个事务程序使用或脱机处理,它必须预先定义在DCT (Destination Control Table)中. 目的地如果与分配给CICS区域的设施关联,就是内部 (IntraPartition)瞬时数据队列;如果数据是要导出到 CICS区域外的目的地的,则是外部的(ExtraPart

5、ition) 瞬时数据队列. CICS对瞬时数据队列提供了3个应用编程接口: (1)写数据到一个瞬时数据队列(WRITEQ TD命令); (2)从一个瞬时数据队列读数据(READQ TD命令); (3)删除一个内部瞬时数据队列(DELETEQ TD命令). 内部(Intrapartition)瞬时数据是指作为独立任务运行的一个或多个程序所用的在直接访问的存储设备 (DASD)上的数据, 被导入/导出内部的存储地点的数据被称为内部瞬时数据,它必须由可变长的记录组成. 1.2 内部瞬时数据的特性 (1)所有的队列使用同一个VSAM(ESDS)数据集,也就是说某个CICS区域使用一个ESDS格式的V

6、SAM文件来存储该区域里的所有的内部瞬时数据队列的元素. (2)记录是可变长度格式. (3)每个队列的记录必须按照一个接一个地顺序写入. (4)每个队列的记录被顺序检索.一旦一个记录被读出, 它就不能再被任何任务所访问(record will be removed), 也就是说对内部瞬时数据队列的读是破坏性读取. (5)可用内部瞬时数据队列进行自动进行任务初始化(Auto Task Initiate ,ATI). (6)不可修改记录. 访问瞬时数据队列当执行READQ/WRITEQ TD命令时,通过TDP访DCT,来对内部瞬时数据集VSAM (ESDS)数据集进行顺序操作. 1.3 外部瞬时数

7、据 外部(Extrapartition)目的地是:存放任一种顺序设备(sequential device)(DASD, 磁带, 打印机,等等)上的队列(数据集),这些数据集是被在CICS区域内(或外)的程序访问的。通常来说,顺序外部瞬时数据队列用来存储和获得在CICS区域外的数据。外部(Extrapartition)队列的记录格式必须在DCT中被系统程序员定义。向瞬时数据队列写入数据 WRITEQ命令既可用于内部数据队列又可用于外部瞬时数据队列的写操作。命令基本格式为: EXEC CICS WRITEQ TD QUEUE (name) FROM (data-area) LENGTH (data

8、 -value) 其功能为将data-area指定的COBOL变量的内容作为一条记录写入名字为name的TDQ队列中。从瞬时数据队列读入数据READQ命令既可用于内部数据队列又可用于外部瞬时数据队列的读取。 命令基本格式为: EXEC CICS READQ TD QUEUE (name) INTO (data-area) LENGTH (data-area) 其功能为从名字为 name的 TDQ中读取记录放到 data-area指定的COBOL变量中。TDQ队列的删除没有专门对于队列中项记录进行删除的命令,只能对整个队列即所有项的删除的操作。前面讲过对TDQ队列的读是一种破坏性读取,当某条记录

9、被读后,相当于该记录也被删除了。并且DELETEQ命令只适用于内部瞬时队列的删除。它用于删除所有与该队列名相关的记录。所有在内部VSAM数据集上与该队列相关的内容会被删除,而相应的存储空间会被释放。很显然DELETEQ是一种物理删除,因此需谨慎考虑好再删除。EXEC CICS DELETEQ TD QUEUE (name) 其功能为删除名为name的整个内部TD。1.4 写瞬时数据队列的例子 WORKING-STORAGE SECTION. 01 WRKFLDS. 05 TD-RECL PIC S9(4) COMP. 05 TD-ERR-CODE PIC S9(8) COMP. 05 F-ER

10、R-CODE PIC S9(8) COMP. 05 F-NUMB PIC X(6) VALUE ZERO. 01 TD-REC. 02 TD DATE PIC X(8). 02 TD-NUMB PIC X(6). 02 TD-AMOUNT PIC X(8). 0l FILEREC 02 STAT PIC X. 02 NUMB PIC X(6). 02 AMOUNT PIC X(8). PROCEDURE DIVISION. EXEC CICS STARTBR FILE(FILEA ) RIDFLD(F-NUMB) GTEQ END-EXEC. PERFORM UNTIL F-ERR-CODE

11、EQUAL DFHRESP(ENDFILE) EXEC CICS READNEXT FILE(FILEA ) INTO (FILEREC ) RIDFLD(F-NUMB) RESP (F-ERR-CODE) END-EXEC. IF F-ERR-CODE EQUAL DFHRESP(NORMAL) MOVE EIBDATE TO TD-DATE MOVE NUMB TO TD-NUMB MOVE AMOUNT TO TD-AMOUNT MOVE 22 TO TD-RECL EXEC CICS WRITEQ TD QUEUE(LSTC ) FROM(TD-REC ) LENGTH (TD-REC

12、L ) RESP (TD-ERR-CODE ) END-EXEC. IF TD-ERR-CODE NOT EQUAL DFHRESP(NORMAL) PERFORM ERROR-ROUTINE END-IF ELSE IF F-ERR-CODE NOT EQUAL DFHRESP(ENDFILE) PERFORM ERROR-ROUTINE END-IF END-IF END-PERFORM EXEC CICS ENDBR FILE(FILEA ) END EXEC. EXEC CICS RETURN END-EXEC. 说明: 1、例子中的GTEQ为大于等于之意。EXEC CICS STAR

13、TBR FILE(FITEA ) RIDFLD(F-NUMB) GTEQ END-EXEC. 2、程序中斜体部分为将长度为TD-RECL的记录TDREC写向队列LSTC中,并将返回码写入TDERR-CODE中。3、IF F-ERR-CODE NOT EQUAL DFHRESP(ENDFILE) PERFORM ERROR ROUTINEEND-IF 表示如果F-ERR-CODE不为NORMAL,即所读文件时出现异常,则执行ERRORROUTINE程序。4、最后程序循环执行读,一直读到ENDFILE。1.5 瞬时数据输入例子获取瞬时数据队列里的所有记录WORKING-STORAGE SECTIO

14、N. 01 WORKFLDS. 05 TD-RECL PIC S9(4) COMP. 05 TD-ERR-CODE PIC S9(8) COMP. 01 TD-REC. 02 TD DATE PIC X(8). 02 TD-NUMB PIC X(6). 02 TD-AMOUNT PIC X(8). PROCEDURE DIV1SlON MOVE 22 TO TD RECL. PERFORM UNTIL TD-ERR-CODE EQUAL DFHRESP(QZERO) EXEC CICS READQ TD QUEUE (LSTC ) INTO(TD-REC) LEN (TD-RECL ) RES

15、P (TD-ERR-CODE)END-EXEC. IF TD-ERR-CODE EQUAL DFHRESP(NORMAL) ELSE IF TD ERR-CODE NOT EQUAL DEHRESP(QZERO) PERFORM ERROR ROUTINE END-IF END-IF END-PERFORM. 说明: (1)在这个例子里,读取瞬时数据队列LSTC的所有记录,采用的技术是一宜读到异常条件QZERO产生为止。(2)QZERO条件标明了这个内部队列为空或已读到一个外部目的地文件的末端。1.6 自动事务初却始化(Auto Task Initiation)对于内部瞬时数据队列,CICS提供了一个自动事务初始化(ATI)选项。下面是一个ATI队列的实例: DFHDCT TYPE=INTRA DESTID=MSGS TRANSID=MSW1 TRIGLEV=500 MSGS是一个TDQ,当MSGS的记录数量达到500条时(由TRIGLEV=500指定),CICS能自动初始化并启动事

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号