循序渐进学习Power Builder 6.0(14-2)

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2017-06-13 17:04:37

14.2 POWER SCRIPT语言

14.2.1 赋值语句

赋值语句可以把一个表达式的结果或者变量和常量的值,赋给一个变量或者对象的属性或成员变量。赋值语句的格式是:

14.2.3 CALL

CALL语句在继承对象中调用祖先对象的脚本,用户在继承对象的事件中不但可以调用祖先的用户对象、菜单对象或者窗口对象的脚本,而且可以调用祖先窗口或者用户对象中的控制的脚本。CALL语句的语法格式为:

CALL ancestorobject[.controlname]::event[(argument)]

其中,ancestorobject指明祖先对象的标识名,controlname是控制的名字,event 和 argument代表被调用的事件及其参数列表,如果事件定义的参数在调用的时候没有argument ,那么空值被作为默认值传递。

新版本的语法允许用户触发(trigger)或者告知调用(post)祖先的事件,但是不能调用祖先中控制的脚本。

14.2.4 CHOOSE CASE

CHOOSE CASE控制结构根据测试值决定程序执行方向,它是一个条件多分支结构。CHOOSE CASE的语法格式为:

CHOOSE CASE testexdivssion

CASE exdivssionlist

Statement

[CASE exdivssionlist

Statement

......]

[CASE ELSE

Statement]

END CHOOSE

testtexdivssion代表测试值,不同的测试值引发不同的语句的执行。exdivssionlist代表判断表达式,它可以用以下的几种形式:

1 用逗号分割的数据,例如:1,2,3,4,5,6,

2 用TO表示一个区间,例如:1 TO 60

3 用IS代表测试值,并辅以关系操作符,例如:IS >20

4 使用以上的三种方法的综合,用逗号分隔,例如:6,6 TO 16,IS > 36

在CHOOSE CASE语句中至少包括一条CASE,并且使用END CHOOSE作为结尾。POWER BUILDER将逐条地查找CASE,如果找到与测试值匹配的判断表达式的时候,就执行该CASE后面的语句,然后转向指向END CHOOSE后的第一条语句如果包含CASE ELSE,在位发现任何匹配CASE条件的时候,执行CASE ELSE后面的语句。

例子:

CHOOSE CASE num

CASE 6

num = 7

CASE IS> 36

num = 36

CASE ELSE

num = 56

END CHOOSE

14.2.5 FOR NEXT

FOR...NEXT是一个计数循环体。使用该语句可以是循环体中的语句被执行规定的次数。该语句的语法格式为:

FOR varname = start TO end [step increment]

statement

NEXT

其中,varname 代表循环变量,start、end分别为初值和终值,increment为步长增量,缺省值为1。在使用FOR NEXT语句的时候应该注意,varname是integer型,end0的值不能取得过大,以防超出integer的取值范围,造成溢出。

例子:

integer array1[16]

FOR I = 1 to 16

array1[I] = I

NEXT

14.2.6 DO…LOOP

DO…LOOP是一个通用的循环语句。它包括四种形式:

1 DO UNTIL … LOOP

DO UNTIL … LOOP的语法格式为:

DO UNTIL condition

statements

LOOP

其中condition代表循环进行的条件,statements表示循环执行的语句。DO UNTIL语句执行循环体的语句直到UNTIL后面标明的条件表达式结果为TRUE,如果在第一次该计算表达式时结果即为FALSE,则循环体中的语句不会被执行。

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,循环结束,但至少被执行一次。

14.2.7 CONTINUE

在DO…LOOP或者FOR…NEXT语句循环体当中,遇到CONTINUE语句的时候,将不执行在CONTINUE后面和循环结束之前的语句,开始新一轮循环。例如在下面的例子中,如果NUM1的值大于36,则执行函数FUNCTION1。

FOR NUM1 = 1 TO 56

IF NUM1 <= 36 THEN FUNCTION1()ELSE &

CONTINUE

NEXT

14.2.8 EXIT

在DO...LOOP或者FOR...NEXT语句循环体当中,使用EXIT可以跳出循环。

例子

FOR I = 1 TO 36

IF ARRAY[I] THEN EXIT

NEXT

14.2.9 IF … THEN

IF … THEN 语句是一个选择分支结构。它有单行和多行两种格式。

1 单行IF … THEN语句

单行IF … THEN语句的语法格式为:

IF condition THEN action1 [ELSE action2]

其中condition 是一条表达式,action1和action2是一条语句。如果condition结果为TRUE,action1将被执行,否则action2将被执行。例如:

IF BOOL THEN NUM = 1 ELSE NUM = 2

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之前的语句,……,如果条件表达式的结果都为FALSE,并存在ELSE子句,则action3被执行。

例子:

IF BOOL1 THEN

NUM = 1

ELSEIF BOOL2 THEN

NUM =2

ELSE

NUM = 3

END IF

14.2.10 CREATE

CREATE语句生成对象实例变量,在生成以后,可以用点操作符引用对象的成员。CREATE语句返回一个可在变量中保存的对象实例句柄。CREATE语句有两种语法格式:

objectvariable = CREATE objecttype

objectvariable = CREATE USING objecttypestring

objectvariable 持有该对象实例,objecttype代表对象类型,objecttypestring是保存需要创建的对象类型名称的字符串。

使用CREATE语句可以创建包括标准类用户对象在内的类用户对象,例如mailSession或者Transaction对象。不过,系统已经为标准用户对象Message、Error、Transaction、DynamicDescriptionArea、DynamicStagingArea提供了一个实例, 如果需要多于一个的的实例,可以使用CREATE语句创立更多的实例。

标准数据类型和结构体不用CREATE创立。当对象的AutoInstantiate属性被设置为TRUE的时候,不需要使用CREATE语句。可视对象实例不使用CREATE语句创立,而使用OPEN函数。使用CREATE语句的第二种语法格式可以在应用中动态地选择对象类型,并创建它的实例。通常在使用继承对象实例初始化祖先对象的时候,使用此CREATE语句格式,

使用CREATE语句创建实例对象,在使用完该对象之后,要用DESTROY命令销毁对象实例。

例子:

torus obj1,obj2

torus_ancestor obj_ancestor

obj1 = CREATE torus

obj2 = CREATE torus

obj_ancestor = CREATE USING obj1

14.2.11 DESTROY

DESTROY语句释放由CREATE创建的实例,释放之后该对象实例不能再被引用。DESTROY语句的语法格式为:

DESTROY OBJName

需要注意的是,在某些情况之下,用户可能需要销毁自己并未创建的Dwobject或者OLEObject对象实例。其原因是:在引用到DataWindow、DWojbect或者OLEObject对象的成员函数或者属性的时候,POWER BUILDER会动态地创立和释放响应对象实例,但是如果用户自己建立了对嵌入对象的引用,而不是调用其本身的成员函数和属性的话,等于重载了内部动态对象,因此用户需要负责释放该对象。

14.2.12 GOTO

GOTO语句控制程序流程,其语法格式如下:

GOTO Label

其中label代表语句标号,其命名应符合标号的命名规则。

例子:

LABEL1:

NUM ++

……

GOTO LABEL1

14.2.13 HALT

HALT语句用于终止应用程序的运行。该语句的语法为:

HALT [CLOSE]

遇到不包含CLOSE选项的HALT语句时,应用程序立即终止。当包含CLOSE的时候,应用先执行CLOSE事件所对应的处理程序,然后再终止应用程序。

14.2.14 RETURN

RETURN语句用于从脚本中返回调用程序。其语法格式为:

RETURN [EXdivSSION]

其中EXdivSSION代表该脚本的返回值。


Tags:

作者:佚名
分享到: 微信 更多