ZPL手册74111

若要从ZPL宏中调用另一个ZPL宏,请使用关键字 CALLMACRO。使用关键字 CALLSETDBL 和 CALLSETSTR 以及函数 CALD和 $CALLSTR 在宏之间传递数据。
通常情况下,从“ZPL宏”对话框中执行的第一个宏是父宏。父宏调用其它宏,并且这些宏称为“子”宏,父宏将创建51个数值和51个字符串的缓存区。缓存区可用于设置或检索数字和字符串值,这样可以使宏共享数据,或者将某个变量传递到另一个变量。缓存区对于每个父宏及其调用的任何子宏都是唯一的。如果有多个父宏同时执行(例如,在两个窗口中分别更新不同的宏),则每个父宏都有自己的缓存区,并且不会在父项之间共享数据。

要了解父宏和子宏的工作方式,最简单的方法是通过示例。以下示例将调用两个很简单的宏。对可以调用或嵌套的宏数量没有硬性限制。
父宏和子宏分别命名为 PARENT.ZPL 和 CHILD.ZPL 。 PARENT.ZPL 宏为:

CALLSETDBL 1, 3.5
CALLSETSTR 1, "Hello World" CALLMACRO CHILD.ZPL
PRINT CALD(1)

CHILD.ZPL 宏为:

PRINT "Executing child macro" PRINT CALD(1)
A$ = $CALLSTR(1) PRINT A$
CALLSETDBL 1, 7.11

在执行 PARENT.ZPL 宏时,使用关键字 CALLSETDBL 将 3.5 放在父宏数字缓存区位置 1 处。使用关键 字 CALLSETSTR 将字符串“Hello World”放置在父宏字符串缓存区位置 1 处。可使用 0 到 50 来定义 任何数字或字符串在缓存区的位置。
PARENT.ZPL 宏随后调用子宏 CHILD.ZPL。子宏将消息“Execut- ing child macro”输出到子宏的显示窗
口,但此输出窗口在执行期间不可见。子宏随后使用 CALD(1) 来提取数值缓存区中位置 1 处的数 值,并使用 $CALLSTR(1) 来提取字符串缓存区位置 1 处的字符串值,并输出这些值。最后,子宏使 用 7.11 覆盖原索引位置 1 处的数值,到此子宏执行结束。
控制会返回到父宏中,将子宏输出窗口的内容复制到父项的输出窗口,并清除子宏输出窗口的内
容。最后输出数值缓存区位置 1 处修改后的数值。执行此宏的最终输出结果如下所示:

Executing child macro
3.5000
Hello World
7.1100

OpticStudio 中的“宏”文件夹中附带有样本宏 PARENT.ZPL 和 CHILD.ZPL。



该文档由光学课堂(www.optkt.cn)生成

最后更新时间:2020/3/7 12:38:22

登录 后发表评论
0条评论
还没有人评论过~