gpt4 book ai didi

cobol - 如果您将文案添加到链接部分而不是将其添加到子程序中的工作存储部分,会发生什么情况?

转载 作者:行者123 更新时间:2023-12-04 17:06:27 29 4
gpt4 key购买 nike

如果您将字帖添加到链接部分而不是将其添加到子程序中的工作存储部分,会发生什么情况?

最佳答案

这是一种常见的做法。拥有可用于调用程序的工作存储或本地存储部分以及被调用程序的链接部分的副本可确保 CALL 上的参数匹配。

如另一个答案中所述,链接部分中没有为抄写本分配存储空间。这与那里描述的任何其他变量没有什么不同。如果您希望链接部分中定义的变量具有可寻址性,则必须将它们包含在过程部分的 USING 短语中,这允许调用参数与链接部分中描述的变量匹配 - 或者 - 您必须动态分配足够的存储空间大小以容纳这些变量并使用 SET ADDRESS OF links-section-item TO pointer-to-allocated-storage。如果您的编译器支持,那么在 COBOL 中分配存储的最可移植的方法可能是 ALLOCATE 语句。使用 IBM Enterprise COBOL 存储可以通过语言环境可调用服务 CEEGTST 分配,Micro Focus 具有 CBL_ALLOC_MEM,一些编译器和环境支持直接调用 C 函数,因此您可以在那里使用 malloc()。

COBOL(和 C 等)编译器不强制传递参数的类型安全。在运行时,被调用程序中的 Linkage Section 变量映射到调用程序中 CALL 语句中变量的地址。

正如@SimonSobisch 的评论中所指出的,在 COBOL 标准中已经完成了一些工作,以通过原型(prototype)对 CALL 强制执行类型安全。并非所有 COBOL 编译器都支持这一点。

如果您有一个定义子程序调用参数的副本,并且在调用程序的工作存储部分和它调用的程序的链接部分使用相同的副本,则只需更改参数定义在一个地方(字帖)完成,并希望您的源代码管理系统将强制重新编译调用者和被调用程序,确保没有参数不匹配。

关于cobol - 如果您将文案添加到链接部分而不是将其添加到子程序中的工作存储部分,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55338967/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com