PowerScript 语句二
一、CHOOSE CASE
CHOOSE CASE 控件结构根据测试值决定程序执行方向,它是一个条件多分支结构。CHOOSE CASE 的语法格式为:
CHOOSE CASE testexpression CASE expressionlist statement [CASE expressionlist ... ] [CASE ELSE statement] END CHOOSE
testexpression 代表测试值,不同的测试值引发不同的语句的执行。
expressionlist 代表判断表达式,它可用以下几种形式:
用逗号分隔的数据,例如:2,3,4
用 TO 表示一个区间,例如:1 TO 30
用 IS 代表测试值,并辅以关系操作符,例如:IS>20 ·50· PowerScript 语言·事件·函数(PowerBuilder 9.0 版)
使用以上三种方法的综合,用逗号分隔,例如:2,3,8 TO 10,IS>20
在 CHOOSE CASE 语句中至少应包括一条 CASE,并且使用 END CHOOSE 作为结尾。PowerBuilder 将逐条查找 CASE,若找到与测试值相匹配的判断表达式时,就执行该 CASE 后的语句,然后转向执行 END CHOOSE 后的第一条语句。如果包含 CASE ELSE,在未发现任何匹配的 CASE 条件时,执行 CASE ELSE后的语句。
下面例子中按照 age 进行分支处理:
CHOOSE CASE age CASE IS<18 ls_str = "儿童" CASE 18 TO 40 ls_str = "成年" CASE ELSE ls_str = "老年" END CHOOSE
二、DO...LOOP
DO...LOOP 是一个通用循环语句。它包括四种形式:
DO UNTIL ... LOOP DO WHILE ... LOOP DO ... LOOP UNTIL DO ... LOOP WHILE
1.DO UNTIL ... LOOP
DO UNTIL ... LOOP 的语法格式为:
DO UNTIL condition Statements LOOP
其中 condition 代表循环进行的条件,statements 表示循环执行的语句。
DO UNTIL 语句执行循环体的语句直到 UNTIL 后标明的条件表达式结果为 TRUE,如果在第一次循环时该计算表达式的结果即为 TRUE,循环体中的语句将不会被执行。
2.DO WHILE ... LOOP
DO WHILE ... LOOP 的语法格式为:
DO WHILE condition statements LOOP
其中 condition 代表循环进行的条件,statements 表示循环执行的语句。
DO WHILE 语句在 WHILE 后的表达式结果为 TRUE 时,执行循环体中的语句。如果第一次对表达式求值的结果即为 FALSE,则循环体中的语句不会被执行。
3.DO ... LOOP UNTIL
DO ... LOOP UNTIL 的语法格式为:
DO statements LOOP UNTIL condition
其中 condition 代表循环进行的条件,statements 表示循环执行的语句。LOOP UNTIL语句在UNTIL后的表达式结果为FALSE时执行循环体中的语句,直到表达式结果为TRUE时结束,但循环体中的语句至少会被执行一次。
4.DO ... LOOP WHILE
DO ... LOOP WHILE 的语法格式为:
DO statements LOOP WHILE condition
其中 condition 代表循环进行的条件,statements 表示循环执行的语句。
LOOP WHILE 语句当 WHILE 后条件表达式结果为 TRUE 时,执行循环体中的语句,如果表达式计算结果为 FALSE,循环结束,但至少会被执行一次。
在下例中,将反复执行 Beep 函数 15 次:
integer a = 1 DO WHILE a <= 15 Beep(1) a++ LOOP
三、FOR...NEXT
FOR...NEXT 是一个计数循环体。使用该语句可以使循环体中的语句被执行规定的次数。该语句的语法格式为:
FOR varname = start TO end [STEP increment] statements NEXT
其中,varname 代表循环变量;start,end 分别为初值和终值;increment 为步长增量,默认值为+1。如果 start 和 end 在循环体中被改变,它们将影响到循环的次数。如果需要使用变步长增量,应该使用DO LOOP 语句。
在使用 FOR NEXT 语句时需要注意 varname 是 integer 型;end 的取值不能过大,否则,超出 integer 的取值范围,就会造成溢出错误。
例如,对一个多维数组赋值可以使用嵌套 FOR...NEXT 语句:
integer li_arr[10,20] FOR i=1 TO 10 FOR j=1 TO 20 li_arr[i,j] = i * j NEXT NEXT
四、IF...THEN
IF...THEN 语句是一种选择分支结构。它有单行和多行两种格式。
1.单行 IF...THEN 语句
单行 IF...THEN 语句的语法格式为:
IF condition THEN action1 [ELSE action2]
其中 condition 是一条件表达式,action1 和 action2 是处理语句。
如果 condition 结果为 TRUE,action1 将被执行,否则 action2 将被执行,例如:
IF sle_code.Text="010" THEN & MessageBox("Hello","010")
2.多行 IF...THEN 语句
多行 IF...THEN 语句的语法格式为:
IF condition1 THEN action1 [ELSEIF condition2 THEN action2 ... ] [ELSE action3] END IF
其中 condition1 和 condition2 是条件表达式,action1,action2 和 action3 是一条或多条语句。
本语句的执行过程为:计算条件表达式 condition1 的结果,如果为 TRUE,则执行 action1,然后略过在它后面在 END IF 之前的语句,离开 IF...THEN 语句;如果 condition1 的结果为 FALSE,则计算条件表达式condition2 的结果,如果为 TRUE,则执行 action2,然后略过在它后面在 END IF 之前的语句,离开 IF...THEN语句;如果条件表达式结果都为 FALSE,并存在 ELSE 子句,则 action3 会被执行。例如,当 li_c 等于 1时,蜂鸣一次,当 li_c 等于 2 时,蜂鸣两次,否则蜂鸣三次,语句如下:
IF li_c=1 THEN Beep(1) ELSEIF li_c=2 THEN Beep(2) ELSE Beep(3) END IF