我使用EXEC CICS程序控制命令,LINK,XCTL和RETURN,以便在Cobol程序之间传递数据。在我的一次治疗期间,CICS共享内存被破坏。似乎传递了COMMAREA覆盖不属于CICS的内存。 要找出出现此问题的原因,我需要更好地了解CICS在使用EXEC CICS程序控制命令时如何管理共享内存。它复制COMMAREA还是使用指针?使用嵌套的EXEC CICS,共享内存中存储了多少COMMAREA?
配置:我使用Microfocus Net Express编译器,环境是UniKix。
PS:如果您对使用EXEC CICS进行覆盖有更多了解,请查看此问题What can cause CICS transaction to write out of CICS allocated memory?。
答案 0 :(得分:2)
不确定Net Express,但在CICS中,使用指针访问commarea。
因此,如果程序x LINKS编程为y,则对y中的逗号进行的任何更新都将在x中显示。
如果y中的Commarea定义大于x中的定义,我会变得更糟 - 你可以在commarea之后更新变量。
对于XCTL,将commarea复制到CICS控制区域并将指针传递给程序