有冲突的编译器选项
COBOL for Linux® 编译器会以两种方式之一遇到冲突的编译器选项:在选项优先级的同一级别上指定了选项的正反两种形式,或者在同一级别上指定了相互排斥的选项。
编译器按以下优先顺序从最高到最低识别选项:
PROCESS(或CBL) 语句中指定的选项cob2命令调用中指定的选项- 在 COBOPT 环境变量中设置的选项
- 配置 (.cfg) 文件的 compopts 属性中设置的选项
- IBM® 缺省选项
如果在层次结构中的同一级别指定有冲突的选项,那么最后指定的选项将生效。
如果在同一级别指定互斥编译器选项,那么编译器会将其中一个选项强制为不冲突的值,并生成错误消息。 例如,如果以任何顺序在 PROCESS 语句中同时指定 CICS® 和 DYNAM ,那么 CICS 将生效,并且 DYNAM 将被忽略,如下表所示。
| 已指定 | 已忽略 | 强制开启 |
|---|---|---|
CICS |
ADDR(64) |
ADDR(32) |
DYNAM |
NODYNAM |
|
THREAD |
NOTHREAD |
但是,在较高优先级别指定的选项会覆盖在较低优先级别指定的选项。 例如,如果在 COBOPT 环境变量中对 CICS 进行编码,但在 PROCESS 语句中对 DYNAM 进行编码,那么 DYNAM 将生效,因为 PROCESS 语句中编码的选项以及由 PROCESS 语句中编码的选项强制启用的任何选项具有更高的优先级。