CICS临时存储(CICS Temporary Storage)以一组队列(CICS Temporary Storage Queues或简称TS Queues)的形式实现。说是“队列”,其实不是严格数据结构意义上的FIFO队列,而是一个对数据记录(Record)标识(Identify)并顺序存储的机构,以供CICS-COBOL程序访问。

每个队列都有一个队列名queue name或队列数据标识data-id唯一识别。通常队列创建用户可以用其程序的EIBTRMID(终端号terminal-id)作为队列名的一部分以保证所创队列不重名。

每个加入队列的记录都被系统赋予一个记录号item number,从1开始。这不是数据记录本身的一部分。应用程序能用记录号顺序或随机访问队列中的数据。

一组队列可以存储在一个名叫temporary storage file或DFHTEMP的VSAM顺序文件中或在主存储Main Storage中。

1. 用于写临时存储的CICS-EXEC命令

EXEC CICSWRITEQ TS  {QUEUE | QNAME}(队列名称)  // 花括号表示这其中两个词都可用,队列名称长1~16字符FROM(对应要写的COBOL数据变量名称)[ITEM(含记录号的COBOL变量) REWRITE] // 这个是用来更新一个已有记录的[NUMITEMS(用于承载此次操作后队列长度的COBOL变量)][MAIN | AUXILIARY]  // 指定是否在主存储还是在DFHTEMP中
END-EXEC

因此,对于添加一个记录(如果指定的队列不存在,CICS会自动创建一个这个名称的队列):

EXEC CICSWRITEQ TS QUEUE(TS-QUEUE-NAME)FROM(TS-QUEUE-RECORD)
END-EXEC.

对于更改一个记录(如果指定的队列不存在,会发QIDERR异常条件;如果指定的记录不存在,会发ITEMERR异常条件):

EXEC CICSWRITEQ TS QUEUE(TS-QUEUE-NAME)FROM(TS-QUEUE-RECORD)ITEM(TS-ITEM-NUMBER) REWRITERESP(RESPONSE-CODE)
END-EXEC.

2. 用于读临时存储的CICS-EXEC命令

EXEC CICSREADQ TS  {QUEUE | QNAME}(队列名称)INTO(承载读得记录的COBOL变量)[ITEM(含记录号的COBOL变量或常量) | NEXT]  // 如果选NEXT则读下一条记录[NUMITEMS(用于承载队列长度的COBOL变量)]
END-EXEC

于是,对于读一个指定记录(随机读取):

EXEC CICSREADQ TS QUEUE(TS-QUEUE-NAME)INTO(TS-QUEUE-RECORD)ITEM(TS-ITEM-NUMBER)RESP(RESPONSE-CODE)
END-EXEC.

读取下一条记录(顺序读取):

EXEC CICSREADQ TS QUEUE(TS-QUEUE-NAME)INTO(TS-QUEUE-RECORD) NEXT
END-EXEC.

无论顺序还是随机读取,如果指定队列不存在,抛出QIDERR异常条件;如果随机读取中的记录号不存在,抛出ITEMERR异常条件。

由于CICS系统中任务对队列的访问都可能造成顺序读取的位置异常,所以使用顺序读取应该用CICS ENQ锁守住队列。

3. 删除队列的CICS-EXEC命令

EXEC CICSDELETEQ TS {QUEUE | QNAME}(队列名称)
END-EXEC

如果队列不存在抛QIDERR异常条件。如果不删除队列,则队列无限期地在那儿。CICS临时存储没有提供删除个别记录的功能,故只能删除整个队列。

一个实例是可以用于CICS伪会话事务(Pseudo-conversational Transactions)中保存跨调用的数据(取代通信区,Communication Area)。例如可以用这个临时存储的设施临时存放一个任务在响应用户请求时从VSAM中读取的准备操作的用户数据;当程序返回给用户确认,然后在另一次调用中具体执行这个用户请求时,再读一次VSAM记录和临时区间记录比照,如果相等则执行,否则则说明记录以改不能继续。这个例子中每次只关心一条记录,所以多次执行会在区域中残存很多记录,程序要负责在事务开始和结束时创建和清理这个临时数据。

转载于:https://www.cnblogs.com/quanben/archive/2011/11/19/3128878.html

CICS的临时存储队列操作相关推荐

  1. linux消息队列操作

    对消息队列的操作无非有以下三种类型: 1. 打开或创建消息队列 消息队列的内核持续性要求每一个消息队列都在系统范围内相应唯一的键值,所以,要获得一个消息队列的描写叙述字,仅仅需提供该消息队列的键值就可 ...

  2. php redis 队列抢红包_redis 队列操作的例子(php)

    Reids是一个比较高级的开源key-value存储系统,采用ANSI C实现.其与memcached类似,但是支持持久化数据存储 入队操作 $redis = new Redis(); $redis- ...

  3. 【Java】轻松掌握队列操作

    轻松掌握队列操作 3.1 如何实现一个排队系统 3.2 队列的数组实现 3.3 队列的链表实现 3.1 如何实现一个排队系统 在日常生活中,处处都能看到排队.在银行.医院这种场景中还会加入排队系统,通 ...

  4. python【蓝桥杯vip练习题库】ADV-233 队列操作

    VIP到期了,今天开始暂时不更新了. 试题 算法提高 队列操作 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 队列操作题.根据输入的操作命令,操作队列(1)入队.(2)出队并输出 ...

  5. 数据结构——栈与队列操作(用栈模拟队列)

    [栈与队列操作] 问题描述:假设有两个长度相同的栈 S1,S2,已知以下入栈.出栈.判栈满和判栈空操作: void Push(S,x); Elemtype Pop(S); bool StackFull ...

  6. 算法笔记_080:蓝桥杯练习 队列操作(Java)

    目录 1 问题描述 2 解决方案 1 问题描述 问题描述 队列操作题.根据输入的操作命令,操作队列(1)入队.(2)出队并输出.(3)计算队中元素个数并输出. 输入格式 第一行一个数字N. 下面N行, ...

  7. [蓝桥] 算法提高 队列操作

    时间限制:1.0s   内存限制:256.0MB 问题描述 队列操作题.根据输入的操作命令,操作队列(1)入队.(2)出队并输出.(3)计算队中元素个数并输出. 输入格式 第一行一个数字N. 下面N行 ...

  8. 蓝桥杯-队列操作(java)

    算法提高 队列操作 时间限制:1.0s 内存限制:256.0MB问题描述队列操作题.根据输入的操作命令,操作队列(1)入队.(2)出队并输出.(3)计算队中元素个数并输出.输入格式第一行一个数字N. ...

  9. jq防止冲突,后退链式,队列操作

    1.jq防止冲突 jq中的方法都是带有$符号来操作,但是如果引用了其他的库,而这些库也有用到$,可能会造成冲突,jquery提供$.noConflict();方法来解决冲突. 例如: var Z = ...

  10. Scala入门到精通——第四节 Set、Map、Tuple、队列操作实战

    本节主要内容 mutable.immutable集合 Set操作实战 Map操作实战 Tuple操作实战 队列操作实战 栈操作实战 mutable.immutable集合 以下内容来源于Scala官方 ...

最新文章

  1. lnmp shell安装脚本
  2. Android Gradle查询器
  3. oracle实验使用游标,Oracle数据库实验-PLSQL游标、过程、函数、包的使用
  4. Android之ConnectivityManager
  5. 机器人网首页应用实例工业自动化 EtherCAT 技术在库卡机器人控制系统上的应用
  6. bi可视化工具_适用于您的BI解决方案的最佳数据可视化和Web报告工具
  7. sql语句 int(11)含义误区
  8. MySQL中的这17个关键问题,一定要弄清楚!
  9. java 注解开发 解耦_Java提升七:注解
  10. 火爆全网MySQL路线笔记!linuxmysql允许远程连接
  11. 转iOS 多线程 RunLoop 机制 (三)
  12. 周立功开发板安装linux,极速搭建周立功IMX283A ARM Linux开发环境(1)
  13. 设x、y、t均为int型变量,则执行语句:t=3; x=y=2; t=x++||++y; 后,变量t和y的值分别为
  14. Jquery 实现json复杂查询等操作(jsonDB)
  15. 【计算机基础恶补】南桥北桥
  16. 达梦8初始化参数之BLANK_PAD_MODE
  17. 局域网搭建Linux镜像源
  18. Jarvis OJ BASIC 公倍数
  19. 《七天数据可视化之旅》第七天:可视化设计实战-数据大屏
  20. matlab编写扫雷,【matlab编程】Matlab版扫雷

热门文章

  1. Logistic回归以及LR与SVM异同
  2. itex将html转成pdf加水印,Springboot 中集成itextpdf HTML转PDF并添加水印(支持中文)
  3. 2021-06-26数组详解
  4. java模拟安卓get请求,Java模拟HTTP Get Post请求实现论坛自动回帖功能
  5. python下视频的包_这套Python视频超详细,包你一小时就可开始入门,100天在编程界驰骋~...
  6. pycharm 升级 pip
  7. 计算机与信息工程学院参与运动会,我院成功举办2018秋季运动会
  8. mysql 清除主从_mysql主从同步及清除信息
  9. 阿里巴巴confont项目的使用
  10. Jxl实现Excel的导入与导出