精通COBOL--16.8 CICS中的队列
2008-04-29 13:48
323 查看
CICS中的队列相当于一块临时缓冲区,用于以队列的形式存放临时数据。在CICS的队列中提供两种数据组织机制。这两种机制分别为瞬时数据(Transient Data)和临时存储(Temporary Storage)。下面重点只介绍临时存储。
当将数据写入临时存储队列中时,是通过WRITEQ命令实现的。例如,以下代码将把文件“TESTF”中的数据依次写入到临时存储队列之中:
IDENTIFICATION DIVISION.
PROGRAM-ID. WTSPGM.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
……
*
PROCEDURE DIVISION.
……
EXEC CICS STARTBR FILE('TESTF')
RIDFLD(RECKEY)
RESP(RCVERR)
END-EXEC
IF RCVERR = DFHRESP(NORMAL)
STRING EIBTRMID EIBTRNID
DELIMITED BY SIZE INTO TS-ID
MOVE 1 TO TS-ITEMNO
PERFORM UNTIL RCVERR = DFHRESP(ENDFILE)
EXEC CICS READNEXT FILE('TESTF')
INTO(REC-FIELD)
RIDFLD(RECKEY)
LENGTH(RECL)
RESP(RCVERR)
END-EXEC
IF RCVERR = DFHRESP(NORMAL)
EXEC CICS WRITEQ TS QUEUE(TS-ID)
FROM(REC-FIELD)
LENGTH(RECL)
ITEM(TS-ITEMNO)
RESP(TS-RCVERR)
END-EXEC
ADD 1 TO TS-ITEMNO
END-IF
END-PERFORM
EXEC CICS ENDBR FILE('TESTF') END-EXEC
……
需要注意的是,对于临时存储队列,对其进行操作时通常会涉及到一个称作ITEM的选项。ITEM按顺序记录了队列中每一数据记录的编号,可用于对记录进行直接访问。
对临时存储队列同样也可进行读取和删除。其中读取队列中指定数据记录(通过ITEM编号指定)的CICS命令如下:
EXEC CICS READQ TS QUEUE(TS-ID)
INTO(TS-REC)
LENGTH(TS-RECL)
ITEM(TS-ITEMNO)
RESP(TS-ERR-CODE)
END-EXEC.
对整个临时存储队列进行删除的CICS命令如下:
EXEC CICS DELETEQ TS QUEUE(TS-ID)
END-EXEC.
当将数据写入临时存储队列中时,是通过WRITEQ命令实现的。例如,以下代码将把文件“TESTF”中的数据依次写入到临时存储队列之中:
IDENTIFICATION DIVISION.
PROGRAM-ID. WTSPGM.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
……
*
PROCEDURE DIVISION.
……
EXEC CICS STARTBR FILE('TESTF')
RIDFLD(RECKEY)
RESP(RCVERR)
END-EXEC
IF RCVERR = DFHRESP(NORMAL)
STRING EIBTRMID EIBTRNID
DELIMITED BY SIZE INTO TS-ID
MOVE 1 TO TS-ITEMNO
PERFORM UNTIL RCVERR = DFHRESP(ENDFILE)
EXEC CICS READNEXT FILE('TESTF')
INTO(REC-FIELD)
RIDFLD(RECKEY)
LENGTH(RECL)
RESP(RCVERR)
END-EXEC
IF RCVERR = DFHRESP(NORMAL)
EXEC CICS WRITEQ TS QUEUE(TS-ID)
FROM(REC-FIELD)
LENGTH(RECL)
ITEM(TS-ITEMNO)
RESP(TS-RCVERR)
END-EXEC
ADD 1 TO TS-ITEMNO
END-IF
END-PERFORM
EXEC CICS ENDBR FILE('TESTF') END-EXEC
……
需要注意的是,对于临时存储队列,对其进行操作时通常会涉及到一个称作ITEM的选项。ITEM按顺序记录了队列中每一数据记录的编号,可用于对记录进行直接访问。
对临时存储队列同样也可进行读取和删除。其中读取队列中指定数据记录(通过ITEM编号指定)的CICS命令如下:
EXEC CICS READQ TS QUEUE(TS-ID)
INTO(TS-REC)
LENGTH(TS-RECL)
ITEM(TS-ITEMNO)
RESP(TS-ERR-CODE)
END-EXEC.
对整个临时存储队列进行删除的CICS命令如下:
EXEC CICS DELETEQ TS QUEUE(TS-ID)
END-EXEC.
相关文章推荐
- 精通COBOL--16.2 CICS编译处理过程
- 精通COBOL--16.5 CICS中的程序调用
- 精通COBOL--16.7 CICS对于文件的操作
- 精通COBOL--16.3.5 获取CICS的终端信息
- 精通COBOL--16.3.6 获取CICS的时间信息
- 精通COBOL--第16章 CICS扩展
- 精通COBOL--16.3.7 获取CICS的日期信息
- 精通COBOL--16.3 CICS在COBOL中的基本应用
- 精通COBOL--16.6 CICS中的MAP
- 精通COBOL--16.1.1 CICS简介
- 精通COBOL--16.1.2 CICS中的交易和任务
- 精通COBOL--16.3.2 使用CICS进行输入输出
- 精通COBOL--16.1.3 CICS的基本操作
- 精通cobol--9.5 表的初始化
- 精通cobol--9.6.4 直接查找方式的适用范围
- 精通cobol--9.9 三种查找方式的比较和总结
- 精通cobol--9.10.4 统计计算小结
- 精通cobol--9.15 定长表和变长表
- 精通cobol--9.16.3 嵌套索引表
- 精通COBOL--11.2.1 子程序的命名规则