第二组规则确定 EGL 如何解析变量引用。有关详细信息,请参阅对变量和常量的引用。
最简单的情况是,您在一个包中一个接一个地定义部件,而不在一个部件中声明另一个部件。以下列表省略了许多详细信息,但显示了处于同一层次级别的一系列部件:
Function: Function01 Function: Function02 Function: Function03 Record: Record01
同一级别的各部件可以相互使用。例如,Function01 可以调用其它一个或两个函数;而 Record01 可以用作三个函数的每一个中的变量的 typedef。
Program: Program01 Function: Function01 Function: Function02 Function: Function03 Record: Record01
最后,如果代码包含文本或打印表单,则需要使用声明才能访问包含那些表单的表单组。当访问数据表或库时,也需要使用声明。有关其它信息,请参阅使用声明。
大多数开发工作会在多个包之间共享部件。下列规则有效:
my.package.myPart
如上所述,在引用部件时可以指定包名,如 my.package.myPart 的示例所示。将考虑当前项目,并考虑 EGL 构建路径中列示的任何项目。
在这种情况下,每个 import 语句都显式地引用特定包中的特定部件。这种显式类型 import 语句中命名的部件将覆盖当前包中的同名部件。
如果在两个不同的项目中有名称完全相同的包,则给定的显式类型 import 语句将使用 EGL 构建路径来执行“最先找到”搜索,即,在找到必需部件时停止。(该部件对于给定项目中的包来说必须是唯一的。)在两个不同项目中存在同名的包并不是错误,但会造成混淆,因此不建议这么做。
如果有两个指定同一部件的显式类型 import 语句,则会发生错误。
在这种情况下,每个 import 语句都将引用给定包中的所有部件,这种语句称为通配 import 语句。
如果在两个不同的项目中有名称完全相同的包,则给定的通配 import 语句将使用 EGL 构建路径来执行“最先找到”搜索,即,在找到必需部件时停止。(该部件对于给定项目中的包来说必须是唯一的。)
如果多个通配 import 语句检索同名的部件,则会发生错误。
在这种情况下,每个 import 语句都显式地引用特定包中的特定部件。这种显式类型 import 语句中命名的部件将覆盖当前包中的同名部件。
如果在两个不同的项目中有名称完全相同的包,则给定的显式类型 import 语句将使用 EGL 构建路径来执行“最先找到”搜索,即,在找到必需函数时停止。(该函数对于给定项目中的包来说必须是唯一的。)在两个不同项目中存在同名的包并不是错误,但会造成混淆,因此不建议这么做。
如果有两个指定同一部件的显式类型 import 语句,则会发生错误。
在这种情况下,每个 import 语句都将引用给定包中的所有部件,这种语句称为通配 import 语句。
如果在两个不同的项目中有名称完全相同的包,则给定的通配 import 语句将使用 EGL 构建路径来执行“最先找到”搜索,即,在找到必需部件时停止。(该部件对于给定项目中的包来说必须是唯一的。)
如果多个通配 import 语句检索同名的部件,则会发生错误。
当在 call 语句或 transfer 语句上调用程序时,调用程序的自变量列表必须与被调用程序的参数列表匹配。自变量和参数不匹配将导致错误。
相关概念
EGL 项目、包和文件
导入
EGL 简介
部件
引用 EGL 中的变量