【问题标题】:In CICS where is the data in the Linkage Section of COBOL stored?在 CICS 中,COBOL 的 Linkage Section 中的数据存储在哪里?
【发布时间】:2021-12-13 14:31:26
【问题描述】:

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

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

【问题讨论】:

    标签: cobol mainframe cics


    【解决方案1】:

    这里对于不同的存储类型存在相当多的混淆。从 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 将复制数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      • 2019-12-23
      • 2022-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多