程序流控制是计算机语言中的一个核心部分。ZPL 提供了以下这些进行程序流控制的关键词:
FOR-NEXT
IF-THEN-ELSE-ENDIF
LABEL
GOTO
PAUSE
GOSUB-SUB-RETURN-END
FOR-NEXT 总是成对出现,用于定义一段需要重复执行多次的程序,其用法如
下:
FOR variable, start_value, stop_value, increment
(commands)
NEXT
其中,FOR 标明需要重复执行的程序段的开始,在此语句中,需要定义一个变量variable 作为计数器(此变量不一定为整数),还需要定义计数器的起始值start_value、中止值 stop_value 及增量 increment。NEXT 标明需要重复执行的程序段的结束。在 FOR-NEXT 之间的语句,则是需要重复执行的程序段,其重复执行的次数由 FOR 语句中定义的参数来控制。FOR-NEXT 关键词可以多层套用。
在 FOR 语句的第一个变量 variable 后面,除了跟逗号 “,” 之外,也可以改成等号“=”,即 FOR variable = start_value, stop_value, increment,有许多编程者偏爱这种形式,认为这样程序更加清晰。另外,在 NEXT 后面可以加上其它字符而不影响程序的运行,因此有很多编程者喜欢在 NEXT 后加上相应的循环变量名,特别是在多重循环套用的时候,这使程序结构更加清晰。需要指出的是,NEXT 后面的字符不具有任何实质意义,在使用时要注意别引起混淆。
当程序运行到 FOR 语句时,此语句中的起始值、中止值及增量将被存储起来。在随后的程序运行过程中,直至整个程序段重复运行结束,中止值及增量将不再改变。所以在程序段中其它地方不能再对其进行赋值。
IF-THEN-ELSE-ENDIF为条件执行语句,其用法为:
IF (expression)
(commands)
ELSE
(commands)
ENDIF
或
IF (expression) THEN (command)
当逻辑表达式expression结果为真时,执行IF后面的commands命令语句,否则执行ELSE后面的commands命令语句。注意此处的括号()可以省略。一般情况下,条件表达式中IF和ENDIF总是成对出现,而ELSE则为可选项。IF-ENDIF关键词可以多层套用。
IF(expression)THEN(command)为条件表达式的简略形式,用于只有单一命令语句需要执行的情况。在简略形式中,不需要 ENDIF,也不支持ELSE
选项。
在某些情况下,需要让程序转向指定的位置去继续执行,这时就可以用到关键词GOTO。关键词 GOTO 总是与另一关键词 LABEL 配合使用,其用法为:
LABEL label_number
…
GOTO label-number
或者:
LABEL text_label
…
GOTO text_label
其中,LABEL 后面可以跟任意数字或字符串(此处可以理解为数字也是一种字符),并可置于程序中的任意行。当程序执行到 GOTO 语句时,转向相应的LABEL 语句,继续执行 LABEL 语句后面的语句。
ZPL 中还有一个关键词 PAUSE,用于暂停程序的执行,并在消息窗口中显示相应信息,等待用户的响应。在用户按 OK 按钮后,程序从暂停处继续执行。关键词PAUSE 的用法如下:
PAUSE
或
PAUSE message
其中,message可以是任何数值量,也可以是字符串。