CICS共享内存如何工作? [英] How CICS shared memory works?

查看:138
本文介绍了CICS共享内存如何工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用EXEC CICS程序控制命令,LINK,XCTL和RETURN,以便在Cobol程序之间传递数据.在我的一种治疗期间,CICS共享内存被损坏.似乎已通过COMMAREA覆盖了不属于CICS的内存. 为了找到发生此问题的原因,我需要更好地了解使用EXEC CICS程序控制命令时CICS如何管理共享内存.它是复制COMMAREA还是使用指针?使用嵌套的EXEC CICS,共享内存中存储了多少个COMMAREA?

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?

配置::我使用Microfocus Net Express编译器,环境为UniKix.

Configuration : I use Microfocus Net Express compiler and the environnement is UniKix.

PS:检查此问题是什么原因导致CICS事务从CICS分配的内存中写出?,如果您了解更多有关使用EXEC CICS覆盖的信息.

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.

推荐答案

不确定Net Express,但是在CICS中,使用指针访问逗号.

Not sure about Net Express, but in CICS the commarea is accessed using a pointer.

因此,如果程序x链接到程序y,则在y中对逗号所做的任何更新将在x中可见.

So if program x LINKS to program y, any updates done to the commarea in y will be visible in x.

如果y中的逗号定义大于x中的定义,我会变得更糟-您可以在逗号之后更新变量.

I gets worse if the Commarea definition in y is bigger than the definition in x - you could update variables after the commarea.

对于XCTL,逗号将被复制到CICS控制区域,并将指针传递给程序

For XCTL, the commarea would be copied into a CICS control area and a pointer passed to the program

这篇关于CICS共享内存如何工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆