在CICS中COBOL的LinkageSection中的数据存储在哪里?

Rog*_*ova 0 cobol mainframe cics

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

  • 主存储器上存储哪些数据?辅助存储?
  • 链接部分下的 DFHCOMMAREA 中的数据存在于哪里?它在主存储上吗?
  • 如果我将 DFHCOMMAREA 从一个程序传递到另一个程序,是否会创建额外的数据副本?(按值或按引用传递)

pie*_*t.t 6

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

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

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

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

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

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