在程序中,使用GOTO语句和IF语句可以改变控制的流向。有三种转移和循环操作可供使用:
转移和循环——GOTO语句(无条件转移)
——IF语句(条件转移:IF…THEN…)
——WHILE语句(当…时循环)
转移到标有顺序号 n 的程序段。当指定1~99999以外的顺序号时,出现P/S报警No.128,可用表达式指定顺序号。
格式为:GOTO n ;( n 为顺序号1~99999)
例:GOTO1;
GOTO#10;
IF之后指定条件表达式。
格式为1: IF[条件表达式]GOTO n ;
如果指定的条件表达式满足时,转移到标有顺序号 n 的程序段。如果指定的条件表达式不满足,执行下个程序段。
格式为2: IF[条件表达式]THEN;
如果条件表达式满足,执行预先决定的宏程序语句。只执行一个宏程序语句。
例: IF[#1EQ#2]THEN#3=0;
如果#1EQ#2的值相同,0赋给#3。
说明: 条件表达式必须包括运算符。运算符插在两个变量中间或变量和常数中间,并且用括号([,])。表达式可以替代变量。运算符由2个字母组成,用于两个值的比较,以决定它们是相等还是一个值小于或大于另一个值。注意不能使用不等号。见表3-10。
表3-10 运算符
在WHILE后指定一个条件表达式。当指定条件满足时,执行从DO到END之间的程序。否则,转到END后的程序段。
格式: WHILE[条件表达式]DO m ;( m =1,2,3)
……
END m ;
说明: 当指定的条件满足时,执行WHILE后从DO到END之间的程序。否则,转而执行END之后的程序段。与IF语句的指令格式相同。DO后的数和END后的数位指定程序执行范围的标号,标号值为1、2、3。若用1、2、3以外的值会产生P/S报警No.126。
在DO-END循环中的标号(1~3)可根据需要多次使用。但是,当程序有交叉重复循环(DO范围重叠)时,将出现P/S报警No.124。
在程序嵌套的应用形式上要注意以下几点。
①标号(1~3)可以根据要求多次使用。
WHILE[…]DO1 …… END1 …… …… WHILE[…]DO1 …… END1
② DO的范围不能交叉。
WHILE[…]DO1 …… WHILE[…]DO2 …… …… END1 …… END2
③ DO循环可以嵌套3级。
WHILE[…]DO1; WHILE[…]DO2; WHILE[…]DO3; ……; END3; END2; END1;
④控制可以转到循环的外边。
WHILE[…]DO1; IF[…]GOTOn; END1; Nn;
⑤转移不能进入循环区内。
IF[…]GOTOn; WHILE[…]DO1; Nn; END1;
说明: 当指定DO而没有指定WHILE语句时,将产生从DO到END的无限循环。