PB的特点及Powerscript的语言基础

来源:互联网 发布:西安事变 知乎 编辑:程序博客网 时间:2024/05/21 05:44

关于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


powerscript程序段 来自于 gyming神  

http://blog.csdn.net/gyming/article/details/7883722#comments


0 0
原创粉丝点击