cobol - 在 CICS 中,COBOL 的 Linkage Section 中的数据存储在哪里?
问题描述
在 z/OS 上的 CICS 中,我有一些问题:
- 什么数据存储在主存储上?辅助存储?
- 链接部分下的 DFHCOMMAREA 中的数据在哪里?它在主存储上吗?
- 如果我将 DFHCOMMAREA 从一个程序传递到另一个程序,那会创建额外的数据副本吗?(按值或按引用传递)
解决方案
这里有一些关于不同存储类型的混淆。从 COBOL 的角度来看,您永远不会担心主存储或辅助存储。您的 COBOL 数据位于由虚拟存储组成的地址空间中,而虚拟存储又由系统认为合适的主存储或辅助存储支持。
虽然您的程序会自动为 WORKING STORAGE 或 LOCAL STORAGE 部分中定义的项目分配内存,但它不会为 LINKAGE SECTION 中定义的任何项目分配内存。要使 LINKAGE SECTION 项目可用,需要两件事:
- 必须分配一些内存
- LINKAGE SECTION 项必须与该内存区域的地址相关联。
这两件事可能以不同的方式发生:
- 对于出现在内存中的项目
USING
,PROCEDURE DIVISION
由调用程序(或调用堆栈中的其他程序)提供,编译器将项目与调用者提供的参数列表中传递的相应地址相关联。在顶级 CICS 程序的 DFHCOMMAREA 的情况下,分配内存的调用程序是 CICS 本身。 - 您可以使用“重新映射”内存从例如 WORKING STORAGE 到 LINKAGE SECTION 项目
SET ADDRESS OF
- 使用较新的编译器,您还可以用于
ALLOCATE
从程序中动态请求内存,并且当与 LINKAGE SECTION 项目一起使用时,它还会自动将该项目与内存相关联
至于您的最后一个问题:将参数BY REFERENCE
从一个程序传递到另一个程序不会创建该数据的额外副本。传递BY VALUE
或BY CONTENT
将复制数据。
推荐阅读
- python - 支持向量机训练:sklearn SGDClassifier.partial_fit 是否能够增量训练 SVM?
- php - PHP DOMDocument::loadHTML() 在属性中的分号处中断
- mysql - 无法从 information_schema (MySQL/MariaDB) 访问列名
- reactjs - GatsbyJS 和 Netlify 表单电子邮件通知的自定义主题
- c# - 在变量中获取 cmd 输出元素(用于输出处理任务)
- javascript - Google Autocomplete API 根据英国邮政编码返回相关房屋列表
- r - 更改栏内的颜色编号
- python-3.x - TypeError:图像数据的形状无效(100、100、1)绘制图像时
- google-cloud-platform - 请求 https://www.googleapis.com/discovery/v1/apis/gmail/v1/rest 时的 HttpError 403 返回“调用者没有权限”
- oracle - Oracle:使用新序列 ID 从 Select 中插入行