首页 > 解决方案 > 在 CICS 中,COBOL 的 Linkage Section 中的数据存储在哪里?

问题描述

在 z/OS 上的 CICS 中,我有一些问题:

标签: cobolmainframecics

解决方案


这里有一些关于不同存储类型的混淆。从 COBOL 的角度来看,您永远不会担心主存储或辅助存储。您的 COBOL 数据位于由虚拟存储组成的地址空间中,而虚拟存储又由系统认为合适的主存储或辅助存储支持。

虽然您的程序会自动为 WORKING STORAGE 或 LOCAL STORAGE 部分中定义的项目分配内存,但它不会为 LINKAGE SECTION 中定义的任何项目分配内存。要使 LINKAGE SECTION 项目可用,需要两件事:

  1. 必须分配一些内存
  2. LINKAGE SECTION 项必须与该内存区域的地址相关联。

这两件事可能以不同的方式发生:

  • 对于出现在内存中的项目USINGPROCEDURE DIVISION由调用程序(或调用堆栈中的其他程序)提供,编译器将项目与调用者提供的参数列表中传递的相应地址相关联。在顶级 CICS 程序的 DFHCOMMAREA 的情况下,分配内存的调用程序是 CICS 本身。
  • 您可以使用“重新映射”内存从例如 WORKING STORAGE 到 LINKAGE SECTION 项目SET ADDRESS OF
  • 使用较新的编译器,您还可以用于ALLOCATE从程序中动态请求内存,并且当与 LINKAGE SECTION 项目一起使用时,它还会自动将该项目与内存相关联

至于您的最后一个问题:将参数BY REFERENCE从一个程序传递到另一个程序不会创建该数据的额外副本。传递BY VALUEBY CONTENT将复制数据。


推荐阅读