【发布时间】:2021-12-13 14:31:26
【问题描述】:
在 z/OS 上的 CICS 中,我有一些问题:
- 主存储上存储了哪些数据?辅助存储?
- DFHCOMMAREA 中链接部分的数据在哪里?它在主存储上吗?
- 如果我将 DFHCOMMAREA 从一个程序传递到另一个程序,这会创建额外的数据副本吗? (按值或按引用传递)
【问题讨论】:
在 z/OS 上的 CICS 中,我有一些问题:
【问题讨论】:
这里对于不同的存储类型存在相当多的混淆。从 COBOL 的角度来看,您永远不会担心主存储或辅助存储。您的 COBOL 数据位于由虚拟存储组成的地址空间中,而虚拟存储又由系统认为合适的主存储或辅助存储提供支持。
虽然您的程序会自动为 WORKING STORAGE 或 LOCAL STORAGE 部分中定义的项目分配内存,但它不会为 LINKAGE SECTION 中定义的任何项目分配内存。要使 LINKAGE SECTION 项目可用,需要两件事:
这两件事可能以不同的方式发生:
USING 的PROCEDURE DIVISION 中的项目,内存由调用程序(或调用堆栈上的其他程序)提供,编译器将项目与在提供的参数列表中传递的相应地址相关联呼叫者,召集者。在顶级 CICS 程序的 DFHCOMMAREA 的情况下,分配内存的调用程序是 CICS 本身。SET ADDRESS OF 将工作存储到链接部分项目
ALLOCATE 从程序中动态请求内存,当与 LINKAGE SECTION 项一起使用时,它还会自动将该项与内存关联至于您的最后一个问题:将参数BY REFERENCE 从一个程序传递到另一个程序不会创建该数据的额外副本。传递BY VALUE 或BY CONTENT 将复制数据。
【讨论】: