PowerScript语句
赋值语句
赋值语句可以把一个表达式的结果或者变量和常量的值,赋给一个变量或者对象的属性或成员变量。赋值语句的格式是:
variablename = expression
其中variablename代表变量名,expression代表表达式,它将表达式的值赋给等号左边的变量。例如:
string = abc
ainteger = 6
由于“=”同时也是逻辑操作符,所以不能使用多重赋值。
li_a = li_b = 0 //不能多重赋值
使用赋值语句也可以为数组变量赋值。例如:
integer aarray[]
aarray = {1,2,3,4,5,6}
在变量和数组之间也可以使用赋值语句复制数据:
array1 = array2
单目操作符
PowerBuilder也提供了一些类似于C语言的单目操作符。我们使用一个表格进行说明:
|
操作符 |
例子 |
等价于 |
|
++ |
I++ |
I = I + 1 |
|
-- |
I-- |
I = I - 1 |
|
+= |
I+=6 |
I = I + 6 |
|
-= |
I-=6 |
I = I - 6 |
|
*= |
I*=6 |
I = I * 6 |
|
/= |
I/=6 |
I = I / 6 |
|
^= |
I^=6 |
I = I ^ 6 |
CALL
CALL语句在继承对象中调用祖先对象的脚本,用户在继承对象的事件中不但可以调用祖先的用户对象、菜单对象或者窗口对象的脚本,而且可以调用祖先窗口或者用户对象中的控制的脚本。CALL语句的语法格式为:
CALL ancestorobject[.controlname]::event[(argument)]
其中,ancestorobject指明祖先对象的标识名,controlname是控制的名字,event 和 argument代表被调用的事件及其参数列表,如果事件定义的参数在调用的时候没有argument ,那么空值被作为默认值传递。
新版本的语法允许用户触发(trigger)或者告知调用(post)祖先的事件,但是不能调用祖先中控制的脚本。
CHOOSE CASE
CHOOSE CASE控制结构根据测试值决定程序执行方向,它是一个条件多分支结构。CHOOSE CASE的语法格式为:
CHOOSE CASE testexpression
CASE expressionlist
Statement
[CASE expressionlist
Statement
...]
[CASE ELSE
Statement]
END CHOOSE
例子:
string a="" choose case a
case ""
messagebox("","num:"+a)
case ""
messagebox("","num:"+a)
case else
a=""
end choose
FOR...NEXT
FOR...NEXT是一个计数循环体。使用该语句可以是循环体中的语句被执行规定的次数。该语句的语法格式为:
FOR varname = start TO end [step increment]
statement
NEXT
其中,varname代表循环变量,start、end分别为初值和终值,increment为步长增量,缺省值为1。在使用FOR NEXT语句的时候应该注意,varname是integer型,end0的值不能取得过大,以防超出integer的取值范围,造成溢出。
列子:
int a,b
for a = to
b=a+b
next
messagebox("","num:"+string(b))
DO...LOOP
DO...LOOP是一个通用的循环语句。它包括四种形式:
1 DO UNTIL...LOOP
DO UNTIL...LOOP的语法格式为:
DO UNTIL condition
statements
LOOP
其中condition代表循环进行的条件,statements表示循环执行的语句。DO UNTIL语句执行循环体的语句直到UNTIL后面标明的条件表达式结果为TRUE,如果在第一次该计算表达式时结果即为FALSE,则循环体中的语句不会被执行。
例子;
int a=,b= DO UNTIL a=
a=a+b LOOP messagebox("",""+string(a))
其中condition代表循环进行的条件,statements表示循环执行的语句。DO UNTIL语句执行循环体的语句直到UNTIL后面标明的条件表达式结果为TRUE,如果在第一次该计算表达式时结果即为FALSE,则循环体中的语句不会被执行。
DO WHILE...LOOP
DO WHILE...LOOP的语法格式为:
DO WHILE condition
statements
LOOP
其中condition代表循环进行的条件,statements表示循环执行的语句。DO WHILE语句在WHILE后的表达式结果为TRUE时,执行循环体中的语句,如果第一次对表达式求值的结果即为FALSE,则循环体中的语句不会被执行。
int a=,b= DO WHILE a<
a=a+b LOOP messagebox("",""+string(a))
其中condition代表循环进行的条件,statements表示循环执行的语句。DO WHILE语句在WHILE后的表达式结果为TRUE时,执行循环体中的语句,如果第一次对表达式求值的结果即为FALSE,则循环体中的语句不会被执行。
DO...LOOP UNTIL
DO...LOOP UNTIL的语法格式为:
DO
statements
LOOP UNTIL condition
其中condition代表循环进行的条件,statements表示循环执行的语句。LOOP UNTIL语句在UNTIL后表达式结果为FALSE是执行循环体中的语句,直到表达式结果为TRUE时结束,但是循环体中的语句至少被执行一次。
int a=1,b=1
DO
a=a+b LOOP UNTIL a= messagebox("",""+string(a))
CONTINUE
在DO...LOOP或者FOR...NEXT语句循环体当中,遇到CONTINUE语句的时候,将不执行在CONTINUE后面和循环结束之前的语句,开始新一轮循环。例如在下面的例子中,如果NUM1的值大于36,则执行函数FUNCTION1。
FOR NUM1 = 1 TO 56
IF NUM1 <= 36 THEN FUNCTION1()ELSE &
CONTINUE
NEXT
EXIT
在DO...LOOP或者FOR...NEXT语句循环体当中,使用EXIT可以跳出循环。
例子
FOR I = 1 TO 36
IF ARRAY[I] THEN EXIT
NEXT
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
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命令销毁对象实例。
Menu itmenu
itmenu = create Menu itmenu.text="test"
messagebox("",itmenu.text) DESTROY itmenu
DESTROY
DESTROY语句释放由CREATE创建的实例,释放之后该对象实例不能再被引用。DESTROY语句的语法格式为:
DESTROY OBJName
需要注意的是,在某些情况之下,用户可能需要销毁自己并未创建的Dwobject或者OLEObject对象实例。其原因是:在引用到DataWindow、DWojbect或者OLEObject对象的成员函数或者属性的时候,PowerBuilder会动态地创立和释放响应对象实例,但是如果用户自己建立了对嵌入对象的引用,而不是调用其本身的成员函数和属性的话,等于重载了内部动态对象,因此用户需要负责释放该对象。
GOTO
GOTO语句控制程序流程,其语法格式如下:
GOTO Label
其中label代表语句标号,其命名应符合标号的命名规则。
例子:
LABEL1:
NUM ++
……
GOTO LABEL1
HALT
HALT语句用于终止应用程序的运行。该语句的语法为:
HALT [CLOSE]
遇到不包含CLOSE选项的HALT语句时,应用程序立即终止。当包含CLOSE的时候,应用先执行CLOSE事件所对应的处理程序,然后再终止应用程序。
RETURN
RETURN语句用于从脚本中返回调用程序。其语法格式为:
RETURN [EXPRESSION]
其中EXPRESSION代表该脚本的返回值
THROW
THROW语句用于触发用户自定义的异常处理。其语法格式为:
THROW exlvalue
其中exlvalue代表Throwable类型的变量。
TRY...CATCH...FINALLY
TRY..CATCH...FINALLY语句的功能是生成exception的独立代码,在遇到某个类型的exception时确定该干什么,并且允许用户在遇到或没遇到exception时关闭一个文件或网络连接(并将对象返回到原始状态)。其语法格式为:
TRY statementClauseT
{CATCH(ThrowableType exIdentifier)statementClauseC}
{...}{FINALLY statementClauseF }END TRY
参数如下表所示:
|
参 数 |
说 明 |
|
statementClauseT |
可能会throw一个exception的代码段 |
|
ThrowableType |
需要捕捉或错误的对象类型。CATCH从语句是可选的,但是必须在TRY程序段的每个CATCH从句中包含相应的exception对象类型和这种类型的局部变量 |
|
ExIdentifier |
ThrowableType类型的局部变量 |
|
statementClauseC |
用来处理捕捉到的exception的代码 |
|
statementClauseF |
清除代码。 |
PowerScript语句的更多相关文章
- PowerBuilder学习笔记之2PowerScript语言(二)
z教材地址:https://wenku.baidu.com/view/1e82d26925c52cc58ad6be05.html?sxts=1565679996440 2.4数组 声明数组:Integ ...
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
- whdxlib
1 数据库系统实现 实 验 指 导 书 齐心 彭彬 计算机工程与软件实验中心 2016 年 3 月2目 录实验一.JDBC 应用程序设计(2 学时) ......................... ...
- PowerScript SQL语句
PowerScript支持在脚本中使用标准的嵌入式SQL和动态SQL语句.还支持在SQL语句中使用数据库管理系统的语句.函数和保留字. 在SQL中任何地点都可以使用常量和任何合法的变量,但使用变量时必 ...
- powerScript脚本
一.powerScript的语法 1.0变量的命名及使用 powerscript的标识符(变量名称)必须以字母或下划线开头,其它的字符可以是下划线(_).短横线(-).美元符号($).号码符号(#) ...
- [转]PB 基本语句 循环语句
PB 基本语句一.赋值语句赋值语句用于给变量.对象属性赋值,这是应用程序中使用最频繁的语句,其语法格式为:variablename = expression_r其中:⑴variablename是变量名 ...
- 【.net 深呼吸】细说CodeDom(2):表达式、语句
在上一篇文章中,老周厚着脸皮给大伙介绍了代码文档的基本结构,以及一些代码对象与CodeDom类型的对应关系. 在评论中老周看到有朋友提到了 Emit,那老周就顺便提一下.严格上说,Emit并不是针对代 ...
- 将表里的数据批量生成INSERT语句的存储过程 增强版
将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...
- mysql学习之 sql语句的技巧及优化
一.sql中使用正则表达式 select name,email from user where email Regexp "@163[.,]com$"; sql语句中使用Regex ...
随机推荐
- 学习笔记《Java多线程编程实战指南》四
JAVA线程同步机制 线程同步机制:是一套用于协调线程间的数据访问及活动的机制,该机制用于保障线程安全以及实现这些线程的共同目标.java平台提供的线程同步机制包括锁.volatile关键字.fina ...
- python:面向对象初级
面向对象编程类的概念 : 具有相同属性和技能的一类事物 人类 抽象对象 : 就是对一个类的具体的描述 具体的人 具体 使用面向对象的好处: 使得代码之间的角色关系更加明确 增强了代码的可扩展性 规范了 ...
- 数据库-Oracle的使用
数据库的作用不言而喻,Oracle 作为一个主流的数据库,了解更是需要的 安装好oracle之后,登录初始账号,一般而言呢,我就新建一个用户, --创建新用户,用户名为JohnWu ,密码为 root ...
- How To Upgrade ASMLib Kernel Driver as Part of Kernel Upgrade? (文档 ID 1391807.1)
How To Upgrade ASMLib Kernel Driver as Part of Kernel Upgrade? (文档 ID 1391807.1)
- python版本的简单贪吃蛇
先看看效果,白色的条是蛇(简单勿怪,有研究的同学请告知做的美观点),做了一个笑脸是糖果,背景弄了一个图, 代码也是从其他人那边弄来的,改了一部分直接可以在window上直接运行 代码如下: #codi ...
- react-native No bundle URL present
解决方案: 1.删除ios目录下的build的目录,关闭模拟器,重新react-native run-ios大多数情况下可以解决 2.
- 比sort()性能更好的原生js代码实现数组从小到大排序
nums = [1,2,4,1,34,6,-1,2] for(let i = nums.length - 1; i > 0; i--) { let maxIdx = i; for(let j = ...
- python-web自动化-鼠标操作
鼠标操作由ActionChains类来完成鼠标操作 perform() 执行鼠标操作move_to_element() 鼠标悬浮:最常用的操作double_click() 双击操作context_cl ...
- 我和blog的初次接触
这是我的第一篇bolg! 进击的小白,要加油哇!
- 【HDFS API编程】删除文件
所有操作都是以fileSystem为入口进行,我们使用fileSystem下的delete方法进行删除文件操作,删除的时候必须慎重. 直接上代码: /** * 删除文件 * @throws Excep ...