【问题标题】:What is the default mode of calling COBOL programs? Static or dynamic?调用 COBOL 程序的默认模式是什么?静态还是动态?
【发布时间】:2019-04-02 08:20:24
【问题描述】:

我最近有一次面试,被问到这个问题:

如果没有指定编译器选项,如何调用 cobol 程序? 静态还是动态?

我回答的是动态,但我不确定正确答案是什么。

【问题讨论】:

  • 大家好,谢谢您的回答。在采访中,他们没有具体说明是哪个编译器。

标签: dynamic static directive cobol mainframe


【解决方案1】:

如果没有指定编译器选项,如何调用 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 编译器选项,发生动态调用

[强调添加]

【讨论】:

    【解决方案2】:

    DYNAM 上的其他答案对于编译器从 IBM 提供的方式是正确的;假设这是一个 IBM COBOL 编译器。

    默认值:NODYNAM

    也就是说,每次安装都会为编译器设置自己的安装默认值,在大多数情况下,这些默认值会建立与编译器默认值不同的首选最小或默认选项。通常,这些与编译器默认值有很大不同。为了保持产品的一致性,这些默认设置往往不会随着时间而改变。它们代表行业规范或偏好。

    针对 Enterprise COBOL for z/OS 6.2.0 记录了编译器选项 here

    注意关于安装默认值的注释:

    安装默认值:已设置的默认编译器选项 安装编译器的时间对您的程序有效,除非 您覆盖这些选项。 (在某些安装中,某些编译器 选项是固定的,因此您无法覆盖它们。如果你有 默认选项有问题,请联系您的系统管理员。) 要确定哪些是默认选项,请运行测试编译 没有指定任何编译器选项。输出清单列出了 在您的网站上生效的默认选项。

    【讨论】:

      【解决方案3】:

      不清楚您使用的是什么编译器,但我找到了一些IBM Enterprise COBOL for z/OS 6.1.0 的文档:

      使用 DYNAM 使通过 CALL 文字语句调用的非嵌套、单独编译的程序在运行时动态加载 CALL 并删除 CANCEL。

      这是提供的示例语法:

      DYNAM option syntax
      
      .-NODYNAM-.   
      >>-+-DYNAM---+-------------------------------------------------><
      

      它进一步观察到

      默认为:NODYNAM

      缩写为:DYN|NODYN

      所以,看起来默认是静态(非动态),动态是编译器选项。

      如果这不是您使用的编译器,请更新您的问题,以便我们找到正确的版本。

      【讨论】:

      • 我猜因为这是一个面试问题,OP 可能不知道他们使用的是哪个编译器。这也是一个非常愚蠢的面试问题。大多数人没有记住所有的编译器。
      • 在我看来这是一个求职面试问题,面试官正在探究候选人对编译器的了解。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      • 2017-03-18
      • 2023-03-16
      相关资源
      最近更新 更多