【发布时间】:2019-04-02 08:20:24
【问题描述】:
我最近有一次面试,被问到这个问题:
如果没有指定编译器选项,如何调用 cobol 程序? 静态还是动态?
我回答的是动态,但我不确定正确答案是什么。
【问题讨论】:
-
大家好,谢谢您的回答。在采访中,他们没有具体说明是哪个编译器。
标签: dynamic static directive cobol mainframe
我最近有一次面试,被问到这个问题:
如果没有指定编译器选项,如何调用 cobol 程序? 静态还是动态?
我回答的是动态,但我不确定正确答案是什么。
【问题讨论】:
标签: dynamic static directive cobol mainframe
如果没有指定编译器选项,如何调用 cobol 程序?静态还是动态?
这似乎是一个棘手的问题,因为默认设置是:CALL literal 是静态的,CALL identifier 是动态的。
见http://publibfp.boulder.ibm.com/epubs/pdf/igy6pg20.pdf, Enterprise COBOL for z/OS,编程指南,版本 6.2, SC27-8714-01。
第 338 页,DLL
默认为:NODLL
第 340 页,动态
默认为:NODYNAM
第 498 页,进行静态调用
当你在一个 使用 NODYNAM 和 NODLL 编译器选项编译的程序, 发生静态调用。使用这些选项,所有 CALL 文字调用都是 作为静态调用处理。
第 499 页,进行动态调用
当您在编译的程序中使用 CALL 文字语句时 使用 DYNAM 和 NODLL 编译器选项,或者当您使用 CALL 标识符 语句在使用 NODLL 编译器选项,发生动态调用。
[强调添加]
【讨论】:
DYNAM 上的其他答案对于编译器从 IBM 提供的方式是正确的;假设这是一个 IBM COBOL 编译器。
默认值:NODYNAM
也就是说,每次安装都会为编译器设置自己的安装默认值,在大多数情况下,这些默认值会建立与编译器默认值不同的首选最小或默认选项。通常,这些与编译器默认值有很大不同。为了保持产品的一致性,这些默认设置往往不会随着时间而改变。它们不代表行业规范或偏好。
针对 Enterprise COBOL for z/OS 6.2.0 记录了编译器选项 here。
注意关于安装默认值的注释:
安装默认值:已设置的默认编译器选项 安装编译器的时间对您的程序有效,除非 您覆盖这些选项。 (在某些安装中,某些编译器 选项是固定的,因此您无法覆盖它们。如果你有 默认选项有问题,请联系您的系统管理员。) 要确定哪些是默认选项,请运行测试编译 没有指定任何编译器选项。输出清单列出了 在您的网站上生效的默认选项。
【讨论】:
不清楚您使用的是什么编译器,但我找到了一些IBM Enterprise COBOL for z/OS 6.1.0 的文档:
使用 DYNAM 使通过 CALL 文字语句调用的非嵌套、单独编译的程序在运行时动态加载 CALL 并删除 CANCEL。
这是提供的示例语法:
DYNAM option syntax
.-NODYNAM-.
>>-+-DYNAM---+-------------------------------------------------><
它进一步观察到
默认为:NODYNAM
缩写为:DYN|NODYN
所以,看起来默认是静态(非动态),动态是编译器选项。
如果这不是您使用的编译器,请更新您的问题,以便我们找到正确的版本。
【讨论】: