在源代码中嵌入编译器选项

Posted

技术标签:

【中文标题】在源代码中嵌入编译器选项【英文标题】:Embedding Compiler Options in source 【发布时间】:2018-07-02 11:59:47 【问题描述】:

我正在将一些 COBOL 代码从 zOS 移动到 Linux,并在 COBOL 程序的顶部偶然发现了这段代码:

   CBL DATEPROC(FLAG),YEARWINDOW(-90)                               004220CB
   ID DIVISION.                                                     004220CB
   PROGRAM-ID.   AL0001.                                            004220C

是 COBOL 编译器检测到的那些编译器选项,还是它们对某种第三方预处理器的指令。

我个人的猜测是,它是处理代码中 Y2K 问题的第三方处理器。

【问题讨论】:

正如 piet 已经指出的,这是原始编译器处理的内容。根据您的新编译器(即???),您可能有类似的选项。 我将尝试在 Linux 上使用 GnuCOBOL,但如果这不起作用,那么我将使用 MicroFocus。如果我了解要更改的内容,我还将考虑编写一个预处理器来处理代码以使其与 GnuCOBOL 一起使用。 【参考方案1】:

对于 IBM 的 Enterprise COBOL,CBL 语句是提供编译器选项的几种方法之一。

您示例中的选项有点特殊,因为 IBM 放弃了 Y2K 支持,因此在从版本 4 迁移到版本 5 时,DATEPROCYEARWINDOW 选项。对于 V5 编译器,它们应该由编译器,但不应导致编译错误。

【讨论】:

我添加了文档参考,因为我认为它们在这里很有用,希望你不介意:;-) @SimonSobisch:所以我看到你破解了 GnuCOBOL。当有人编码 PIC X(2) DATE FORMAT YY 时,这在 GnuCOBOL 中的等价物是什么?

以上是关于在源代码中嵌入编译器选项的主要内容,如果未能解决你的问题,请参考以下文章

每天整理点Linux--gcc常用选项

ARM编译器V6.15性能优化及注意事项

在应用程序中嵌入 C++ 编译器

嵌入式LAB 2:ARM指令

使用嵌入在 Windows 7 上的 MySQLi 编译 PHP

keil5不查版编译会报错吗?