我需要在 z/OS UNIX 上使用 Cobol 4 编译器编译 Cobol 源代码,但我只有一个 Cobol 5 编译器。是否有将 Cobol 5 限制为 Cobol 4 编译的选项?我正在使用安装到 z/OS 上 Cobol 安装的 IGY520.HFS PDS 的 cob2 命令。我在 IBM 文档中进行了搜索,但没有找到任何东西。
3 回答
不,我强烈建议您学习迁移指南和任何关于迁移主题的 SHARE 演示文稿,遗憾的是,SHARE 不再向非会员提供其出色的内容。
报告的最常见问题与旧编译器允许的无效数据有关。引用上面链接的 Tom Ross 的 SHARE 演示文稿......
77 A1 PIC X(4) VALUE ’00 0’. *> x’F0F040F0’, third byte *> has x’4’ for zone bits. *> OK in PIC X, not valid in *> PIC 9 USAGE DISPLAY 77 A2 REDEFINES A1 PIC 9(4). PROCEDURE DIVISION. IF A2 = ZERO *> Compiler could do character DISPLAY ’ZERO‘ *> or numeric compare ELSE DISPLAY ’NOT ZERO‘ END-IF
程序显示“ZERO”还是“NOT ZERO”取决于您在 COBOL V4 和更早版本以及 COBOL V6 中使用的编译器选项
还要注意如何处理打包数据的差异,请参阅这个最近的问题。
NUMCHECK 编译选项可以在这些情况下为您提供帮助,但请注意编译选项无法在编译时检测无效数据,它们只能生成代码以在运行时检测无效数据。
不是我知道的。我看到以下内容可能有用。
CMPR2、FLAGMIG 和 NOCOMPILE 编译器选项
COBOL CMPR2、FLAGMIG 和 NOCOMPILE 选项标识需要转换以在 Enterprise COBOL 下编译的源语句。CMPR2 和 FLAGMIG 选项在 Enterprise COBOL 中不可用,但您可以使用带有这些选项的旧编译器来标记需要更改的语句,以便与 Enterprise COBOL 一起编译。
Enterprise COBOL> V4.2 FLAGMIG4 编译器选项
APAR PM93450 for Enterprise COBOL V4.2 提供了一个新的编译器选项 FLAGMIG4,可帮助您迁移到 Enterprise COBOL V5 或 V6。还建议您为 APAR PI12240、PI26838 和 PI58762 安装 PTF,因为它们包含对 FLAGMIG4 选项的更新。FLAGMIG4 选项标识 Enterprise COBOL V4 程序中不受支持或在 Enterprise COBOL V5 或 V6 中以不同方式支持的语言元素。编译器会为所有此类语言元素生成警告诊断消息。
COBOL 5 程序与 COBOL 4 向后兼容(它们可以相互调用),但 COBOL 5 不生成 COBOL 4 对象模块。为什么需要 COBOL 4 编译?