参数或变量是一个内存区。在某些情况下,变量包含重要的业务数据;如特定名称或职员标识。在另外一些情况下,变量是引用变量;它包含用来在运行时访问业务数据的值(明确地说是内存地址)。
在将一个非引用变量赋给另一个非引用变量时,将得到两份同样的业务数据。例如,如果赋值语句中的源变量包含特定职员标识,则该语句会使目标变量也包含该标识。但是,将一个引用变量赋给另一个引用变量时,源和目标都将包含用于访问同一内存区的值。
引用兼容性规则(如后所述)在下列情况下适用:
- 将一个引用变量赋给另一个引用变量时;或者
- 当 EGL 在自变量与相关参数之间传送数据时,但仅当处于下列其中一种情况时才会这样:
- 接收函数中的参数具有修饰符 INOUT。
- 该参数在 PageHandler 的 onPageLoad 函数中。
- 该参数在由另一 EGL 程序调用的 EGL 程序中。
在这些情况下,自变量为源,该参数为目标。
引用兼容性的规则如下所示:
- 一个引用变量只能赋给或传送给同一类型的另一个引用变量。
- 当源(或自变量)引用基本类型或一组 DataItem 时,下列陈述适用:
- 基本特征(如果有的话)必须完全相同。例如,类型为 CHAR(6) 的自变量与类型为
CHAR(7) 的参数不兼容。
- 可空自变量与可空或非可空参数是兼容的。不可空自变量仅与不可空参数是兼容的。
- 不同包中的部件被视为不同类型,但 DataItem 部件例外。
- 对于固定记录或结构字段,自变量的长度必须大于或等于参数的长度。此规则能够阻止接收代码访问无效内存。