EGL call 语句将控制权转移至另一程序并可以选择传递一系列值。当被调用程序结束时,控制返回到调用程序;并且,如果被调用程序更改了任何通过变量传递的数据,则可用于调用程序的存储区域也会更改。
指定的名称不能是保留字。如果调用程序必须调用与 EGL 保留字同名的非 EGL 程序,则在 call 语句中使用另一个程序名,然后使用链接选项部件的 callLink 元素来指定别名,此别名是在运行时使用的名称。
如果被调用程序是 Java™ 程序,则被调用程序名区分大小写;calledProgram 与 CALLEDPROGRAM 不同。除此之外,是否区分程序名的大小写取决于被调用程序所在的系统:对于 UNIX® 区分大小写,其它则不区分大小写。
在 EGL 调试器中,被调用程序的名称不区分大小写。
建议不是在 call 语句中而是在生成时使用的链接选项部件中将非 EGL 生成的程序标识为以外部方式定义。(相关属性位于链接选项部件的 callLink 元素中,并且也名为 externallyDefined。)
如果(在开发时)选择了程序属性 VAGCompatibility 或者(在生成时)将构建描述符选项 VAGCompatibility 设置为 yes,则支持此指示符。
建议不要在 call 语句中指示屏幕刷新首选项,而是在生成时使用的链接选项部件中进行指示。(相关属性位于链接选项部件的 callLink 元素中,并且名为 refreshScreen。)
下面是一个示例:
if (userRequest == "C") try call programA; onException myErrorHandler(12); end end
call 语句中自变量的个数、类型和顺序必须与被调用程序期望的值的个数、类型和顺序相对应。
强烈建议每个自变量中传递的字节数与期望的字节数相同。仅当对长度不匹配进行的运行时更正导致类型不匹配时,该不匹配才会导致错误:
例如,在将空格添加至类型为 NUM 的数据项时会发生错误,但将空格添加至类型为 CHAR 的数据项时就不会出错。
所有目标系统都支持递归调用。
调用受到生成时所使用的链接选项部件(如果有的话)的影响。(通过设置构建描述符选项 linkage 来包括链接选项部件。)
有关链接的详细信息,请参阅链接选项部件。
相关概念
链接选项部件
EGL 语句和命令的语法图