您的位置:首页 > 其它

精通COBOL--16.8 CICS中的队列

2008-04-29 13:48 260 查看

  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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: