向编译器声明常量名称及其值。
[Modifiers] DEFINE <idConstant> := <uValue> [AS <idType>]
Modifiers | 一个可选的修饰符列表,用于指定主体的可见性或范围,例如:PUBLIC, STATIC, INTERNAL, EXPORT 和 UNSAFE. |
<idConstant> | 常量的有效标识符名称。 常量是一个实体,因此与其他实体共享相同的名称空间。 这就意味着,常量和全局变量不能同名。 |
<uValue> | 分配给 <idConstant> 的常量值。 该值可以是下面列出的数据类型之一的字面量表示,也可以是只涉及运算符、字面量表示和其他 DEFINE 常量的简单表达式;但不允许使用更复杂的表达式(包括类实例)。 |
AS <idType> | 指定数据类型。如果省略,编译器依据编译选项来决定数据类型,或者是 USUAL,或者是由编译器自行决定。 |
一旦使用 DEFINE 语句声明并初始化了常量名称和值,就不能更改 <idConstant> 的值,否则会导致编译器出错。 只要在应用程序中遇到 <idConstant> 标识符名称,就会使用常量值 <uValue>。
您可以通过声明一个同名变量(使用 LOCAL、MEMVAR 或 FIELD)来隐藏例程中的常量名称。 变量名的搜索顺序如下:
1. LOCALs、local parameters、MEMVARs 和 FIELDs
2. SELF instance variables (即在类方法中不使用 <idObject>: 前缀)
3. GLOBALs 和 DEFINEs
提示:您可以根据 DEFINE 常量的值执行有条件生成。 有关更多信息和示例,请参阅本章中的 #ifdef 和 #ifndef 语句。
以下示例将应用程序名称分配给常量 cAppName。 该值将在程序运行开始和结束时显示:
DEFINE cAppName := "Accounts Payable"
...
FUNCTION Start()
? "Start of ", cAppName, " application."
...
? "End of ", cAppName, " application."