CICS 共享内存如何工作?
我使用 EXEC CICS 程序控制命令、LINK、XCTL 和 RETURN 来在 Cobol 程序之间传递数据。在我的一次治疗过程中,CICS 共享内存被损坏。看来通过 COMMAREA 覆盖了不属于 CICS 的内存。 为了找出发生此问题的原因,我需要更好地了解当我使用 EXEC CICS 程序控制命令时 CICS 如何管理共享内存。它复制 COMMAREA 还是使用指针?使用嵌套EXEC CICS,共享内存中存储了多少COMMAREA?
配置:我使用Microfocus Net Express编译器,环境是UniKix。
PS:检查这个问题什么可能导致CICS 事务要从 CICS 分配的内存中写入吗? 如果您了解有关使用 EXEC CICS 覆盖的更多信息。
I use EXEC CICS program control commands, LINK, XCTL, and RETURN in order to pass data between Cobol programm. The CICS shared memory get corrupted during one of my treatment. It seems that passed COMMAREA overwrite memory that not belong to CICS.
To find why this problem occured I need to know better how CICS manage the shared memory when I use EXEC CICS program control commands. Does it copy COMMAREA or use pointer? Using nested EXEC CICS, how many COMMAREA are stored in the shared memory?
Configuration : I use Microfocus Net Express compiler and the environnement is UniKix.
PS : Check this question What can cause CICS transaction to write out of CICS allocated memory? if you know more about overwritting using EXEC CICS.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不确定 Net Express,但在 CICS 中,逗号区域是使用指针访问的。
因此,如果程序 x 链接到程序 y,则对 y 中的逗号所做的任何更新都将在 x 中可见。
如果 y 中的 Commarea 定义大于 x 中的定义,情况会变得更糟 - 您可以在 commarea 之后更新变量。
对于 XCTL,逗号区域将被复制到 CICS 控制区域中,并将指针传递给程序
Not sure about Net Express, but in CICS the commarea is accessed using a pointer.
So if program x LINKS to program y, any updates done to the commarea in y will be visible in x.
I gets worse if the Commarea definition in y is bigger than the definition in x - you could update variables after the commarea.
For XCTL, the commarea would be copied into a CICS control area and a pointer passed to the program