我在cics中编码这个旋转部分时面临问题

时间:2017-08-18 19:40:13

标签: mainframe cics

我们如何在CICS中旋转CUSTOMER NUMBER值? 例如。如果客户编号是c52063 我怎样才能进入下一个值,即C52064(比如说)在CICS?

1 个答案:

答案 0 :(得分:1)

这是一个非常广泛的问题,基本上你是在询问CICS中可用的持久性机制。

请理解......之间存在很大差异。

  • 技术上可行的
  • 您商店允许的内容
  • 根据您的要求,可能提供强大且可维护的解决方案

这是三件非常不同的事情。我们中的一些人在StackOverflow上回答问题,这些经历使我们对于在没有提及您的商店允许的内容或正在解决的实际业务需求的情况下回答技术上可行的问题时保持沉默。

大型机已经存在了半个多世纪,许多商店都有技术问题的标准解决方案。有时候解决方案不会这样做,而这就是我们做的事情。"违背技术人员的建议或商店标准是职业限制。

有两个选项,并不是一个详尽的清单...

  • SELECTUPDATE DBMS(例如DB2)中的值。您必须使用SELECT。{/ li>对FOR UPDATE SQL进行编码
  • READREWRITE VSAM文件中的值。您必须使用READ选项为UPDATE编码。

在任何一种情况下,您都要对资源进行锁定,直到您遇到显式(EXEC CICS SYNCPOINT)或隐式(事务结束)同步点或回滚(EXEC CICS SYNCPOINT ROLLBACK或异常终止条件)。持有这样的锁意味着您的事务的所有其他实例将等到同步点或回滚发生。

如果您知道 某些 ,您的应用程序将仅限于一个CICS区域...... 其他选项包括将事务作为区域初始化处理的一部分启动,该事务将获取并填充共享资源,例如临时存储队列,其名称与应用程序已知,并具有最后已知的客户编号。此初始化事务必须从某处获取最高使用的客户编号,可能是DBMS或VSAM文件。应用程序必须编码为ENQ和DEQ,以便访问临时存储队列。您可以在不使用临时存储队列但使用共享内存并将该内存的地址存储在您所在区域的CICS CWA中的情况下执行此操作。同样,ENQ和DEQ逻辑必须在应用程序中编码。

您可以使用CICS Systems Programmer定义的命名计数器。请务必阅读并理解IBM知识中心中记录的应用程序的恢复要求。

同样,这不是一个详尽的列表,只是概述了一些可用的选项。与您的技术人员交谈,他们可能有您的商店使用的标准解决方案或根据他们的经验和您的要求的偏好。