(笔记记录于东莞裕元)
一.语言基础
1.大小写
PowerScript语言是大小写不敏感语言(Non case sensitive).
2.注释
行注释 //
块注释 /* */
3.断行符(;),续行符(&)
断行符: 不同语句可用分号分割,或者另起一行不用分号
续行符: 块注释中换行不必加续行符,SQL语句中不必加换行符。不能在标识符和保留字中间续行。
4.标识符
必须以字母或下划线开头.
其余字符可以是字母、数字及下述的特殊符号:下划线(_)、短横线(-)、美元符号($)、号码符号(#)、百分号(%)
最长40个字符,中间不能有空格
保留字不能做标识符
标识符不分大小写
5.特殊ASCII码字符
特殊符号 表示方法 特殊符号 表示方法
折行(New Line) ~n 制表符(Tab) ~t
垂直制表(Vertical Tab) ~v 回车(Return) ~r
换行(Formfeed) ~f 退格(Backspace) ~b
双引号(") ~" 单引号(') ~'
波浪号(~) ~~
6.空值(NULL)
IsNull(), SetNull()
7.代词
This: 代表窗口、用户对象、菜单、应用对象或控件本身.
Parent: 当前空间所在的窗口(包含当前对象的容器对象).
ParentWindow: 代表运行时菜单所在的窗口,该代词只能在菜单的事件处理程式中使用.
Super: 继承关系调用父对象. Call Super::Clicked
8.对象、属性、函数和事件的引用方法
访问对象属性的格式
对象名.对象属性
访问对象函数与事件的格式
{objectname.}{type}{calltype}{when} functionname({argumentlist})
objectname: 对象名
type: 类型,取值为
Function(缺省值): 函数
Event: 事件
calltype: 查找函数时机,有效取值
Static(缺省值): 编译时查找
Dynamic: 运行时查找,若不存在,产生运行时错误
when: 指明函数或事件是立即执行还是当前程序执行完毕后执行,取值:
Trigger(缺省值): 立即执行
Post: 当前程序执行完毕后执行
functionname: 函数、时间名称
argumentlist: 参数列表
例: cb_name.Event Trigger Clicked()
9.保留字
Alias,and*,autoinstantiate,Call,Case,catch,choose,close*,Commit,connect,constant,Continue,
create,cursor,declare,Delete,describe*,descriptor,Disconnect,Do,dynamic,else,Elseif,End,
enumerated,event,Execute,Exit,external,False,Fetch,Finally,first,for,Forward,From,function,
global,Goto,Halt,if,immediate,Indirect,Into,intrinsic,is,Last,Library,loop,next,Not,Of,on,open*,
Or,Parent,post*,perpare,Prior,private,privateread,privatewrite,Procedure,protected,protetedread,
protectedwrite,Prototypes,public,readonly,ref,Return,rollback,rpcfunc,select,Selectblob,shared,
static,step,Subroutine,super,system,systemread,Systemwrite,then,this,throw,Throws,to,trigger,
true,Try,type,until,update*,Updateblob,usinig,variables,while,With,within,_debug
二.数据类型
(1).标准数据类型
(2).ANY数据类型
(3).系统对象数据类型
(4).枚举类型
1.标准数据类型
Blob 二进制大对象,储存大量数据
Boolean 布尔型 True/False
Character或Char 字符
Date 日期
Datatime 日期时间,仅用于访问数据库
Decimal或Dec 带符号十进制数,最大18位精度(18digits)
Double 带符号浮点数,15位有效数字(15digits)
Integer或Int 16位带符号整数(16bit)
Long 32位带符号整数(32bit)
Real 带符号浮点数,精度6位
String 字符串
Time 24小时制时间
UnsignedInteger或UnsignedInt或Uint 16位无符号整数
UnsignedLong或Ulong 32位无符号整数
Any
2.Any类型
可变数据类型,可以接受标准数据类型、结构类型、对象及数组等多种类型.
ClassName() 判断数据类型
3.系统对象数据类型
窗口、菜单、各种控件
4.枚举类型
以英文单词开始,以感叹号结束.
例: Center!, Justify!, Left!, Right!,
查看: Brower/Enumerated/Properties
三.声明语句及变量作用域
1.变量声明
简单变量声明
数据类型 变量名{=初值}{,变量名{=初值}...}
String ls_name
Dec类型变量声明
Dec|Decimal{{精度}} 变量名{=初值}
如果未指定精度,则以赋值时给定精度为准.
Decimal{2} sc_amount
完整的变量声明语法
{访问权限} 数据类型 {{大小}}{{精度}} 变量名{=初值}
2.数组声明
数据类型 数组名[数组元素]
Integer person[30] 下标从1到30
Integer person[3 to 10] 下标从3到10
动态数组: 数组声明时方括号内未填数字
二维数组: Real lr_array[10,10]
三维数组: Char ls_3darray[2,3,4]
3.常量声明
Constant 数据类型 常量名=常量值
例: Constant real LR_PI=3.14159265
4.外部函数声明
外部函数指使用其它语言编写,并保存在动态链接库中的函数。在Unix和Macintosh平台上这样的库称为共享库.PB应用程序调用动态库须先声明。
两类外部函数(全局外部函数、局部外部函数)
(1)全局外部函数: 可以在应用程序的任何地方调用.
(2)局部外部函数: 通常在某个窗口、菜单、用户对象、用户自定义函数中声明,它们成为这些对象定义的一部分,通常只能在这些对象的事件处理程序或函数中使用.
外部函数本身的参数类型、参数个数、返回值等信息需参看定义该函数的相关文档.
(1)带返回值的外部函数声明
{access} Function returndatatype name ({{Ref} datatype1 arg1,...,{Ref} datatypen argn}) Library "libname" Alias for "extname"
(2)不带返回值的外部函数的声明
{access} Subroutine name ({{Ref} datatype1 arg1,...,{Ref} datatypen argn}) Library "libname" Alias for "extname"
参数说明:
access: 以局部变量声明时才需要,有效值
Public
Protected
Private
Function或Subroutine: 指明是函数还是过程
returndatatype: 返回值类型
name: 外部函数名称
Ref: 参数采用引用方式传递
datatype1 arg1: 参数类型和名称
libname: 动态链接库名称
Alias for "extname": 别名
应用程序在查找动态库时的顺序
(1)当前目录
(2)Windows目录
(3)Windows系统目录
(4)系统中全局路径中指定的目录
5.数据库存储过程声明与执行(Function, Subroutine).
声明Oracle数据库存储过程
DECLARE pro_subroutine_name PROCEDURE For
pro_db_subroutine_name(:arg1,...,:argn);
执行存储过程
Execute pro_function_name;
IF SQLCA.SQLCODE = -1 THEN
RETURN 1
END IF
6.变量的作用域.
全局变量 Global Variables
实例变量 Instance Variables
共享变量 Shared Variables
局部变量 Local Variables
四.操作符
1.算术操作符
+ 加 - 减 * 乘 / 除 ^ 乘方(幂)
2.关系操作符
= 等于 > 大于 < 小于 <> 不等于 >= 大于等于 <= 小于等于
3.逻辑操作符
NOT 非 AND 与 OR 或
4.连接操作符 +
连接String或Blob型变量.
五.创建与释放对象实例
1.创建对象实例
objectvariable = Create objecttype
objectvariable = Create Using objecttypestring //objecttypestring为字符串或字符串变量
例: 创建事务对象
transaction dbtrans
dbtrans = Create transaction
dbtrans.DBMS = 'ODBC'
(1).Create只能创建非可视对象
(2).可视对象使用合适的Open函数创建.
2.释放对象实例
Destroy objectvariable
3.收集废弃对象
(1).GarbageCollect() //立即执行收集废弃对象功能.
(2).GarbageCollectSetTimeLimit() //设置两次废弃对象收集过程之间的最小时间间隔.
(3).GarbageCollectGetTimeLimit() //得到当前设置的收集废弃对象的最小时间间隔.
六.语句
1.赋值语句
variablename = expression
2.CALL语句
用于在后继对象的事件处理程序中调用祖先对象的事件处理程序
CALL ancestorobject {controlname}::event{(argumentlist)}
例: Call w_emp cb_close::Clicked
3.条件语句
(1).IF语句
IF condition1 THEN
action1
ELSEIF condition2 THEN
action2
END IF
(2).CHOOSE CASE语句
CHOOSE CASE testexpression
CASE expressionlist
statementblock
...
END CHOOSE
4.循环语句
(1).DO ... LOOP循环
DO UNTIL condition
statements
LOOP
DO WHILE condition
statements
LOOP
DO
statements
LOOP UNTIL condition
DO
statements
LOOP WHILE condition
(2).FOR ... NEXT循环
FOR varname = start TO end [STEP increment]
statementblock
NEXT
(3).GOTO语句
GOTO label
(4).EXIT(退出循环)
(5).CONTINUE(继续循环)
5.返回语句与终止程序运行
(1).RETURN语句
RETURN {expression}
(2).HALT语句
Halt(Close) //close:先执行Close事件后终止程序.
6.异常处理语句
(1)THROW语句
Throw exlvalue //exlvalue:Throwable类型变量,自定义异常类,继承于系统异常类Exception,Exception继承于Throwable类.
(2)TRY ... CATCH ... FINALLY语句
TRY statementClauseT //statementClauseT: 可能触发异常的语句块
{CATCH(ThrowableType exIdentifier) statementClauseC} //statementClauseC: 发生ThrowableType异常后执行的块, exIdentifier: 本地变量
{...}
{FINALLY statementClauseF} //statementClauseF: 发生异常后会执行的语句,CATCH处理后FINALLY继续执行.
END TRY