定义
使用 DEFINE 编译器选项,通过将 DEFINE 伪指令与 PARAMETER 短语配合使用,为程序中定义的编译变量指定字面值。 在 DEFINE 选项中为编译变量提供的字面值有时称为对应编译变量的 "参数值"。 可以在任何条件编译伪指令中使用编译变量,包括 DEFINE, EVALUATE和 IF。 当条件编译变量出现在条件编译伪指令中时,它将被视为对它当前表示的字面值的符号引用。
DEFINE 编译器选项为您提供了一种从程序源外部向编译变量赋值的方法。 如果不需要,那么在程序源中使用 DEFINE 伪指令来定义编译变量就足够了。
缺省值为: NODEFINE
缩写为: DEF | NODEF
- compilation-variable-name-1
- 要在程序中的条件编译伪指令中引用的编译变量的名称。 如果对于程序中的 compilation-variable-name-1 ,不存在具有 PARAMETER 短语的相应
DEFINE伪指令,那么将忽略为该编译变量指定的DEFINE编译器选项的任何实例。 compilation-variable-name-1 是根据数据名称用户定义的词的规则构成的,但名称中不允许使用 DBCS 字符。 有关详细信息,请参阅 COBOL for Linux® on x86 Language Reference中的 User-defined words 。 - literal-1
- compilation-variable-name-1 将在程序中的条件编译相关伪指令中象征性地表示的字面值。 literal-1 必须是下列其中一项:
- 字母数字字面值,可以指定为常规字母数字字面值('abcd')或十六进制字面值( x'F1F2F3' )。 不支持本地文字, DBCS 文字和以 null 结束的字母数字文字 (Z 文字)。
- 整数文字。
- 布尔文字 (仅支持 B "0" 和 B "1")。
如果未指定 literal-1 ,那么将对编译变量指定值 B "1"。 例如,如果您指定:
将为>>define foofoo分配值 B "1"。
注: 编译器解释某些 shell 脚本编制字符 如下所示:
- 将等号 (=) 解释为左括号, (
- 将冒号 (:) 解释为右括号,)
- 下划线 (_) 解释为单引号 (')
您可以添加反斜杠 (\) 转义字符以阻止解释,从而在字符串中传递字符。 如果希望反斜杠 (\) 表示自身 (而不是转义字符) ,请使用双反斜杠 (\\)。
例如,要使用 DEFINE 选项将字面值 1 指定给编译变量 VAR1,请按如下所示指定 DEFINE 选项:
DEFINE(VAR1=1)如果 VAR1 包含要从编译器解释中转义的等号,冒号或下划线,请按如下所示指定 DEFINE 选项:DEFINE(VAR1\=1)可以指定 DEFINE 选项的多个实例,以定义多个不同编译变量的值。 如果多次定义单个条件编译变量,那么该变量的最后一个定义将用作相应条件编译变量的值。 如果 NODEFINE 出现在 DEFINE 选项的先前实例之后,那么将取消所有条件编译变量的定义。
在 CBL 语句中指定 DEFINE 选项时,只能在批处理程序的第一个程序上使用这些选项。 因此,如果一个文件中有多个 COBOL 程序,那么在第一个程序之前可以有带有 DEFINE 选项的 CBL 语句,而其他程序则没有。 为第一个程序指定的 DEFINE 选项 (以及作为 cob2 命令选项指定的 DEFINE 选项) 适用于文件中的所有程序。
