精通COBOL--16.8 CICS中的队列

  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.

你可能感兴趣的:(精通COBOL--16.8 CICS中的队列)