PB的特点及Powerscript的语言基础

关于PB首先要明白

pb主要用于企业管理应用开发很好,虽然大部分的人认为这是一个已经过时的语言,但是在医疗软件比如HIS,还是起着相当重要的作用。

PB具有以下特点(来自百度百科)

(1)可视化、多特性的开发工具。全面支持Windows或WindowsNT所提供的控制、事件和函数。 PowerScript语言提供了几百个内部函数,并且具有一个面向对象的编译器和调试器,可以随时编译新增加的代码,带有完整的在线帮助和编程实例。

(2)功能强大的面向对象技术。支持通过对类的定义来建立可视或不可视对象模型,同时支持所有面向对象编程技术,如继承、数据封装和函数多态性等。这些特性确保了应用程序的可靠性,提高了软件的可维护性。

(3)支持高效的复杂应用程序。对基于Windows环境的应用程序提供了完备的支持,这些环境包括Windows、WindowsNT和WinOS/2。开发人员可以使用PowerBuilder内置的Watcom C/C++来定义、编译和调试一个类。

(4)企业数据库的连接能力。PowerBuilder的主要特色是DataWindow(数据窗口),通过DataWindow可以方便地对数据库进行各种操作,也可以处理各种报表,而无需编写SQL语句,可以直接与Sybase、SQLServer、Informix、Oracle等大型数据库连接。

(5)强大的查询、报表和图形功能。PowerBuilder提供的可视化查询生成器和多个表的快速选择器可以建立查询对象,并把查询结果作为各种报表的数据来源。 PowerBuilder主要适用于管理信息系统的开发,特别是客户机/服务器结构。

当然掌握powerbuilder首先要懂得它的编程语言-————PowerScript
一.语言基础
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

目 录 一、 实现目标 4 二、 框架构思及概念图 4 三、 数据类(DataClass) 5 3.1、 系统对象信息(D_SYSOBJECTS) 5 3.2、 系统字段信息(D_SYSCOLUMNS) 6 3.3、 主外键关系(D_SYSFOREIGNKEYS) 6 四、 资源类(ResourceClass) 7 4.1、 框架参数(FrameworkParameter) 7 4.2、 数据元素字典D_DATAELEMENT(DataElement) 8 4.3、 字段属性表达式类(D_SYSCOLUMNS_ATTRIBUTES) 9 4.4、 系统参数字典(D_SYSPARMDICT) 9 五、 信息类(InformationClass) 10 六、 功能类(FunctionClass) 10 七、 组织类(OrganizeClass) 11 7.1、 角色(Role) 11 7.2、 操作员(Operator) 11 八、 框架设计结构图 11 8.1、 数据项属性表达式部分 11 九、 窗口基类设计 12 9.1、 带有提示栏的窗口 12 十、 数据窗口服务及相关对象 13 10.1、 框架参数对象(uo _FrameworkParameter) 13 10.2、 表达式替换 14 10.3、 操作员数据权限(my_n_cst_dwsrv_popedom_data) 15 10.4、 修改属性表达式(my_n_cst_dwsrv_ModifyDWExpression) 15 10.5、 修改字段显示标题(my_n_cst_dwsrv_ModifyColumnTitle) 16 10.6、 关联查询服务(my_n_cst_dwsrv_RelationSearch) 16 10.7、 GRID风格DW打印服务(my_n_cst_dwsrv_DWPrint) 18 10.8、 DW显示风格设置(my_n_cst_dwsrv_ViewStyle) 19 10.9、 系统字典维护工具 20 10.9.1、 数据结构字典定义 20 10.10、 允许用户进行自定义的参数(D_SYSCONFIG) 21 十一、 简单业务流程处理(Simple Business Flow) 22 11.1. 简单业务流程的定义 22 11.1.1. 业务流程中环节的定义 23 11.1.2. 业务流程的实例化 24 11.1.3. 任务数据的检索 26 11.1.4. 业务流程处理引擎(my_n_cst_workflowengine) 27 11.1.5. 界面设计 31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值