一.基础语法规则
1.注释行
1)作用域从双斜杠(//)开始,到该行尾结束.
2)块注释
作用域从结束,其中包含的代码全是注释内容.
2.大小写
一般不区分大小写.
3.标识符
1)必须以字母开头(A到z),其余字符可以是字母或者数字,最长为40个字符.
2)可以使用的特殊字符有
连接符:-
下划线:_
美元符:$
号码符:#
百分号:%
不可使用空格.
4.续行符&:
它可以使一条语句分多行编写.
例:
name="wangying&
ping"
5.分隔符";"
在一行写多条语句
例:
Integer i;a=b+c;i=a
二.运算符
四种运算符:
算术运算符
关系运算符
逻辑运算符
字符串连接运算符:"+"
三.数据类型
1.标准数据类型
数据类型 | 含义 |
Blob | 二进制大对象,用于保存大量的数据,如:位图,大文本等. |
Boolean | 布尔型,True或False |
Char | 单个ASCII字符 |
Date | 日期,包括年,月,日 |
Datetime | 将日期和时间合并为一个数据类型. |
Decimal | 有符号的十进制数,最大精度可达18位. |
Double | 有符号的浮点数,精度为15位,范围从2.2E-308到1.7E+308 |
Int | 16位有符号数,范围从-32768到+32767 |
Long | 32位有符号数,范围从-2,147,483,648到+2,147,483,648 |
Real | 有符号的浮点数,精度为6位,范围从1.17E-38到3.4E+38 |
String | ASCII字符串,长度从0到59,999 |
Time | 24小时制时间,即小时,分,秒及秒的小数位(长度位) |
Uint | 16位无符号整数,范围从0到65,535 |
Ulong | 32位无符号整数,范围从0到4,294,967,295 |
2.系统对象数据类型
3.枚举数据类型
枚举变量可以赋值给一组固定的值,该固定值以叹号(!)结束.
四.变量
1.作用域
1).Global全局变量
在整个应用程序中都可访问的变量.
2).Instrance实例变量
该类型的变量在一个对象(窗口,菜单,应用程序等)中定义,可以在该对象的任何处访问它们.
3).Shared共享变量
Shared与Instrance的相同之处也是在一个对象中定义的,不同之处是Instrance只与该对象的某个事例相关,而Shared与该对象的类相关.因此可以为该对象类的所有事例访问.
4).Local局部变量
在脚本中定义,因此也仅可在脚本中使用.
2.Instrance的访问权限
1)Public
PB缺省的访问权限.
2)Private
仅可在定义变量的对象的脚本中访问.
3)Protected
Protected变量的访问权限与Private变量相似,但Protected变量不仅可以为声明它的变量访问,还可以为继承它的对象的脚本访问.
以上是3种基本的访问权限,此外Instrance还支持如下4种扩展的访问权限.
.ProtectedRead:只有定义变量的对象和其后代的脚本才有权对该变量执行读操作.
.ProtectedWrite:只有定义变量的对象和其后代的脚本才有权对该变量执行写操作.
.PrivateRead:只有定义变量的对象的脚本方可对该变量挂靠 读操作.
.PrivateWrite:只有定义变量的对象的脚本方可对该变量执行写操作.
五.常量
1.声明常量使用关键字Constant
例:
constant Integer lizi_code=20
定义常量并对其赋值后不可修改.
六.数组
数组是有序的变量的集合.
数组可分为:
.一维数组
.二维数组
.多维数组
.动态数组
1.一维数组
1)声明数组
声明时设置数组的下标
例:
Integer A[4]
一个名为A的整型数组,数组中包含的元素为:A[1],A[2],A[3],A[4]
注:在缺省情况下,数组元素的下标值从1开始,直到声明的设定值.
如有特殊要求,也可以在下标中指明.
例:
Integer B[3 To 10]
不例声明的数组B包括下标值从3到10的8个元素,即从B3到B10.
2)赋值
.可以一次为一个数组元素赋值:B[3]=15
.也可以一次为多个数组元素赋值:
Integer Code[5]
Code={1,2,3,4,5}
2.动态数组与多维数组
1)动态数组
.动态数组即不定长数组.
.当定义数组时如果不知道数组的长度,则应使用动态数组.
声明动态数组时,在方括号中不设定数组的下标:
Integer Li[]
2)二维数组及多维数组
.定义数组时,下标用逗号分开.例:
Integer Lizi[2,3]
七.代词
.当引用一个对象时,可以不使用该对象的名称,而使用相应的代词.
This
Parent
Super
1.This
其代替对象本身.
例一个命令按钮:cb_close
This.enabled=false
等价于:
cb_close.enabled=false
2.Parent
.表示所在对象的父对象
例在一个窗口w_main中有一个按钮,在其按钮中有一命令:
Close(Parent)
等价于:
Close(w_main)
3.Super
.只有在处理继承时才使用Super代词,Super用于引用一个后代对象的直接祖先.
例如,如果要在当前窗口的Close事件中执行其祖先窗口w_ance的Close事件脚本,应在当前窗口的Close事件中添加如下代码:
Call Super::Close
等价于
Call w_ance::Close
八.语句
1.流程控制
. If condition then
action
End if
. If condition1 then
Beep(1)
elseif condition2 then
Beep(2)
else
Beep(3)
end if
Beep(1)喇叭响一下; Beep(2)喇叭响二下; Beep(3)喇叭响三下.
2)CHOOSE CASE
.choose case testexpression
case expressionlist
statementblock
{...}
{case else
statementblock}
end choose
.textexpression:要测试的表达式
.expressionList:表达式列表,有如下方式:
(1)一个单独的值,如3,"ab"等.
(2)一组用逗号分开的值,如:1,3,5,7.
(3)用to表示的一个区间的数据,如:1 to 20.
(4)用IS表示测试值,再加上关系运算符和比较值,如: IS<20.
(5)以上方式的结合使用,之间用逗号分开.
3)DO...LOOP
.循环语句
.有4种格式
(1)
DO UNTIL condition
statementblock
LOOP
执行循环语句,直到condition条件表达式为True.如果第一次测试表达式的值就为True,则不执行循环体中的语句.
例:
Integer A=1
do until A>10
Beep(A)
A=A+1
loop
上例重复执行Beep函数,直到A大于10为止.
(2)
do while condition
statementblock
loop
当condition条件表达式为True,执行循环语句.如果第一次测试表达式的值为False,则不执行循环体中的语句.
例:
Integer A=1
do while A<=10
Beep(A)
A=A+1
loop
当A小于等于10时,重复执行Beep函数.
(3)
do
statementblock
loop until condition
这种循环语句至少运行一次,直到condition条件表达式的值为True时为止.
(4)
do
statementblock
loop while condition
这种循环语句至少运行一次,当condition条件表达式的值为True时继续运行,直到condition条件表达式的值为False时为止.
4)FOR...NEXT
for varname=start to end {step increment}
statementblock
next
其中:
.varname:循环变量
.start:起始值
.end:终止值
.increment:步长
2.其它语句
1)HALT
中断应用程序的执行.
格式:
HALT {CLOSE}
说明:
如果语句中有CLOSE选项,则执行应用程序的CLOSE事件处理程序.
中断之前,首先执行应用程序的CLOSE事件处理程序.
2)CREATE
.创建非可视类用户对象
.在 PB语言中,有两类用户对象:
(1)可视类
(2)非可视类
用户对象.
创建可视类用户对象使用Open()函数.
创建非可视用户对象要使用CREATE语句.
格式:
objectvariable=creatE objecttype
.objectvariable:对象变量
.objecttype:对象数据类型
例:
transaction DBTrans
DBTrans=create transaction
DBTrans.DBMS="ODBC"
3)DESTROY
删除由CREATE语句创建的对象
格式:
destroy objectvariable
4)RETURN
从脚本中返回调用程序.
例:
if arg2<>0 then
return arg1/arg2
else
return -1
end if