在CICS 中,COBOL 的Linkage Section 中的数据存储在哪里?

In CICS where is the data in the Linkage Section of COBOL stored?

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

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

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

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

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

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

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