IF ... ELSE_IF ... ELSE ... END_IF
IF 系列语句用于作出决定。然后根据所作决定来执行宏的某些部分,而不执行其他部分。
在以下代码片段中,将会询问用户希望构造线呈水平、竖直还是垂直于现有线:
READ "ENTER 'H' FOR HORIZ, OR 'V' FOR VERT, OR 'P' FOR PERP" Q
IF (Q='H')
C_LINE HORIZONTAL P2 {if Q='H', only this statement}
{is executed}
ELSE_IF (Q='V')
C_LINE VERTICAL P2 {if Q<>'H', but Q='V', only these}
LET X 3 {two statements are executed}
ELSE
C_LINE PERPENDICULAR P1 P2 {if Q<>'H', and Q<>'V',}
{but Q='P', only this statement is}
{executed}
END_IF
条件从顶部向下,以阶梯形式进行评估。一旦发现条件为真,便会执行与该条件关联的语句,并忽略其余阶梯。
可以根据需要多次使用 ELSE_IF 语句,或者一次也不使用。只能具有一个 ELSE 语句,且必须在结尾出现。最后的 ELSE 为默认条件。也就是说,如果其他所有条件测试均失败,那么便会执行 ELSE 语句。如果不存在最后的 ELSE,且其他条件均失败,则不会执行任何操作。有时会在防御式程序设计中使用最后的 ELSE 来处理错误。
绝对最小 IF 语句不具有 ELSE_IF 或 ELSE。例如:
IF (X = 4)
LET P2 P5
END_IF
IF 语句可以进行嵌套,但是每个 IF 都必须具有自己的 END_IF。我们可以展开之前的示例:
IF (X < 6)
IF (X = 4)
LET P2 P5
END_IF
LINE TWO_PTS P1 P2 END
END_IF