CICS TDQ概述2

1.8 写临时存储队列

对队列增加一个新记录项的命令为:

说明:

以上命令中 QUEUE(name): 指定队列名,1-8个字节

QNAME( name):同QUEUE,但可指定1-16 字节长的队列名字

FROM( data-area):指定要写入QUEUE 的数据区

LENGTH( data-value):半字长二进制参数,指定要写入的字节数

ITEM( data-area):半字长二进制参数,指定要写入的记录号(与REWRITE 选项同时使用)

NUMITEMS( data-area):半字长二进制参数,CICS用来返回写入后队列里一共有多少 记录

REWRITE:指明更新一条记录的数据

MAIN:指明TSQ 数据存放在内/主存

1.9 读取临时存储队列

EXEC CICS READQ TS

QUEUE(name)

INTO(data-area)

LENGTH(data-area)

[ITEM(data area) | NEXT]

[NUMITEMS (data-area )]

END-EXEC

1.10临时存储队列的删除

1.11临时存储顺序输出例子

WORKI1NG-STORAGE SECTION

01 WRKFLDS

05 TS-RECL PIC S9(4) COMP VALUE 80.

05 TS-ERR CODE PIC S9(8) COMP.

05 TS-ITEMNO PIC S9(4) COMP.

05 TS- ID PIC X(8).

PROCEDURE DIVISION.

STRING EIBTRMID EIBTRNID DELIMITED BY SIZE INTO TS-ID.

EXEC CICS WRITEQ TS QUEUE(TS-ID)

FROM(TS-REC)

LENGTH(TS-RECL)

ITEM(TS-ITMENO)

RESP(TS-ER-CODE)

END EXEC.

IF TS-ERR-CODE NOT EQUAL DFHRESP(NORMAL)

PERFORM ERROR-ROUTINE

END-IF.

说明:

(1)该临时存储队列ID是通过STRING命令动态构造的。开头的四个字节包含从EIB块中的EIBTRMID字段获得的终端ID和结尾的四个字符包含从EIB获得的事务ID。这描述了动态为在多终端上执行的事务创建唯一不重复临时存储ID的技术. (2)WRITEQ TS命令执行之后,TS-ITEMNO域包含了刚写入的记录的项目编号。我们可能希望把这个信息和其他记录的标识一起存储,以便以后对这个记录的访问和更 新。ITEM(TS-ITEMNO)将写入的记录的项目编号保存到 TS-ITEMNO变量中去。

1.12更新临时存储记录例子

WORKING STORAGE SECTION

01 WRKFLDS

05 TS-RECL PIC S9(4) COMP VALUE S0.

05 TS-ERR-CODE PIC S9(8) COMP.

05 TS-ITEMNO PIC S9(4) COMP.

05 TS-ID PIC X(8).

01 TS-REC PIC X(80)

PROCEDURE DIVIS1ON

STRING EIBTRMID EIBTRNID DELIMITED BY SIZE INTO TS-ID.

MOVE 20 TO TS-ITEMNO.

EXEC CICS WRITEQ TSQ QUEUE(TS-ID)

REWRITE FROM(TS-REC)

LENGTH(TS-RECL)

ITEM(TS-ITEMNO)

RESP (TS-ERR-CODE )

END-EXEC.

IF TS-ERR-CODE NOT EQUAL DFHRESP(NORMAL)

PERFORM ERROR ROUT1NE

END-IF.

. . .

变量TS-ITEMNO用于WRITEQ命令的ITEM选项里。它必须包含要更新的队列记录的项目编号。

1.13 TSQ 和TDQ的区别

1、临时存储队列的数据可以随即读取,而瞬时数据对列的数据必须顺序读取

2、临时存储队列的数据可以反复读取,因为数据一直保持可用直到整个队列被删除;而瞬时数据队列的数据只能读一次

3、临时存储队列中的数据可以修改,而瞬时数据队列中的数据则不允许

4、临时存储队列可以存储到主存储器或辅存,而瞬时数据队列只能写到磁盘上

5、临时存储队列的名字可以动态定义,而瞬时数据队列的名字必须事先定义到DCT中

6、临时存储队列的名字长度最多为8个字符,而瞬时数据队列为4个字符

1.14 CEBR命令

CICS为队列的处理提供了一个专门的内部事务CEBR.

使用CEBR可以对当前CICS区域中的一些临时存储队列的内容进行浏览。

CEBR默认打开与当前终端相关的TSQ。

CEBR命令在ENTER COMMAND===>后可输入几个命令:

1、         TERM 浏览其他终端的TSQ

2、         QUEUE 打开新的QUEUE

3、         PUT 把当前TSQ的内容拷贝到一个TDQ 中去

4、         GET 打开一个TDQ的内容来浏览

5、         PURGE 删除当前TSQ的所有记录

CICS队列对于DFHCOMMAREA来说是存储和比较信息的另一可选的方法。

在伪会话设计中,临时存储TS用作信息的存储和比较的过程如图所示.

1)在伪会话式的设计中,临时存储可能会被用于保留在第一部分的对话中提供给用户的记录数据。

2)当该记录在会话的第二部分被读出时,它就被与跟从临时存储器得到的存储的数据相比较。

3)如果记录没有被其化的任务所修改,更新就会继续;否则,用户就会被提醒该记录数据已被修改并且要选择下一步要怎样做。

     

如果这文章对你有帮助,请扫左上角微信支付-支付宝,给于打赏,以助博客运营

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注