CICS环境下COBOL Linkage Section及DFHCOMMAREA存储与传递问题咨询
z/OS CICS存储与参数传递问题解答
1. CICS主存与辅存的存储数据分类
- 主存存储的内容:CICS核心系统控制块(如TCA、TCB、PPT、PCT等)、当前活跃交易的工作存储区、已加载的可执行程序模块、主存型临时存储队列(TSQ)、瞬态数据队列(TDQ)内存缓冲区、交易级临时数据(包括
DFHCOMMAREA)、正在处理的文件记录缓存。 - 辅存存储的内容:VSAM/非VSAM业务数据集、辅助型持久化TSQ、持久化TDQ(含日志类队列)、CICS系统日志与交易恢复日志、未加载的程序加载库、归档类业务数据。
2. COBOL Linkage Section 数据存储位置及DFHCOMMAREA存储属性
COBOL的Linkage Section仅为数据结构定义,本身不分配实际存储空间,它指向的存储位置由调用方传入的参数地址决定,可对应主存的任意合法地址空间。DFHCOMMAREA的实际存储空间由CICS为当前交易在交易专属主存区域分配,完全存储在主存中。
3. DFHCOMMAREA跨程序传递的副本机制与传递类型
DFHCOMMAREA在不同程序间传递时一定会生成额外的数据副本,属于值传递:
- 执行
EXEC CICS LINK调用子进程时,CICS会将调用方的DFHCOMMAREA拷贝一份传递给子程序,子程序修改的是副本内容,调用返回时CICS会将修改后的副本内容同步回调用方的原始DFHCOMMAREA地址。 - 执行
EXEC CICS XCTL跳转到同级程序时,CICS同样会生成DFHCOMMAREA副本传递给目标程序,原调用程序的内存空间会被CICS回收,不存在回拷逻辑。
内容的提问来源于stack exchange,提问作者Roger Strycova
相关产品推荐
相关产品推荐

