一、powerScript的语法

1.0变量的命名及使用
powerscript的标识符(变量名称)必须以字母或下划线开头,其它的字符可以是下划线(_)、短横线(-)、美元符号($)、号码符号(#) 、百分号(%)。
1.1.最长40个字符(实际可以更长),中间不能有空格
1.2.保留字不能用作标识符(变量名称)。
1.3 标识符不区分大小写,如:PART、part、Part表示同一个标识符
1.4 特殊符号表示
换行符                       ~n
回车                           ~r
制表                           ~t
竖直制表符                ~v
换行                           ~f
退格                           ~b
波浪号                       ~~
单引号                        ~'
双引号                        ~""
2.Null(空值)
null是powerbuild与数据库交换数据时使用的一种特殊值,表示数据未定义、不确定,它与空字符串、数值零、以及日期00-00-00的意义完全不同。
powerscript的所有数据类型都支持null,将变量赋null的方法有两个,
2.1.从数据库中读到空值
2.2.使用SetNull函数赋值,例:String person="";
SetNull(person);将person变量的值设置为 null
测试变量是否为null时,使用函数IsNull(),例:IF IsNull(a) THEN,不能使用 IF a=NULL THEN,因为空值不等于任何值,也不等于另一个空值。
3.powerScript中断行、续行与多条语句
3.0 powerScript中的续行符号"&",它放在一行的末尾指示下一行是当前行的继续,例如:
把语句MessageBox("SQL语句出错","出错号="+String(SQLCA.SQLCode))写成两行
 
MessageBox("SQL语句出错","出错号="+&
String(SQLCA.SQLCode))
但是不能在保留字或标识符(变量名)的中间续行,例如:
MessageBox("SQL语句出错","出错号="+String(SQL&
CA.SQLCode))
 
如果想一行中写多条语句可以用分号进行分隔例:
a=b+c;g=q-m;
4.powerScript中的注释
4.0 单行注释"//",多行注释"/*  */",例: // 这是一条注释
/* 我是注释多行的*/
5.对象、属性、函数和事件的引用方法
5.0对象属性的使用
对象名.属性名,例如:UserEnter=sle_name.Text,sle_name单行文本编辑框的名称,Text是其属性
5.1函数和事件的访问方式
[objectname.][type][calltype][when]functionname([argumentlist))
objectname对象名称
type 类型的取值为Function或Event,用于指明访问的是函数还是事件,默认是Function
calltype 用于指明powerbuilder查找函数的时机,有效取值为:static(默认值)编译时查找函数,如果不存在,则产生编译错误
dynamic程序运行时查找函数,如果不存在,则产生编译错误。
when用于指明函数或事件是立即执行还是当前程序段执行完之后执行,取值为trigger(默认值)立即执行,post当前程序段执行完之后再执行
functionname是指调用的函数或事件的名称,argumentlist是调用函数或事件的参数
例如:把焦点移到单行编辑框中  sle_name.SetFocus()
给按钮添cb_name加单击事件,cb_name.EVENT Trigger Clicked() 
6.代词的使用(This、Parent、ParentWindow、Super)
6.0 This表示正在为之编写事件处理程序的对象
6.1 Parent表示当前控件所在的窗口,例如:窗口w_win中有个按钮cb_close,其作用是单击该按钮关闭窗口w_win,我们可以在按钮的Clicked事件处理中写上close(w_win),或close(Parent)
6.2 ParentWindow表示运行时菜单所在的窗口,该代词只能在菜单的事件中使用,例如,关闭菜单的Clicked事件中写上 close(ParentWindow)
6.3 Super调用父对象的Clicked事件处理程序
CALL Super ::Clicked
调用在子类重载的父的函数f_func()
Super:: f_func()
7.powerScript中的数据类型
Blod  表示二进制对象,用于存储大量数据,例如图象、大文本等。
Boolean  布尔开型,取值为true或false
Character或Char  单个ASCII字符
Date 表示日期,包括年(1000-3000)、月(01-12)、日(01-31)
Datetime 表示日期及时间,仅用于访问数据的Datetime类型数据
Decimal或Dec  表示带符号十进制数,最大18位精度
Double  表示带符号的浮点数,15位有效数字
Integer或Int  表示16位带符号整数
Long   表示32位带符号整数
Real    表示带符号浮点数,精度6位
String  表示字符串类型,用于存储字符,长度为0-60000
Time    表示小时,24小时制的时间,小时(00-23)、分(00-59)、秒(00-59)
UnsignedInteger或UnsignedInt或Uint 表示16位无符号整数
UnsignedLong或Ulong 表示32位无符号整数
7.0.any数据类型
any是一种可变的数据类型,程序中给它什么类型的值,它将变成什么类型,any类型可以接受标准数据类型,结构数据类型、对象及数组等各种类型
判断any保存的是什么数据类型,可以使用ClassName函数
8.变量的声明
数据类型  变量名称,例如:Integer i,a,b
Blob类型的变量声明,Blob[{大小}] 变量名,Blob的默认长度为0,系统会根据实际数据的长度自动调整其长度。例如:blob{100} temp_pic //表示长度为100的 blob类型变量
blob ib_picture表示一个默认长度为0的blob变量
Decimal类型的变量声明
Dec|Decimal [{精度}] 变量名,精度是指小数点之后的位数,如果没有指定,则以赋值时的精度为准.
数组的声明
数据类型 数组名称 [大小]
Integer person[30],real  lr_array[10,10]声明一个二维数组,real  lr_array1[3]={1.2,3.2,3.5}
常量的声明
CONSTANT 数据类型 常量名=常量值,constant可以声明除blob之外的任意标准数据类型
9.变量的作用域
变量的作用域有以下四种:
1. 全局变量
 可以在整个程序内访问。
2.共享变量
在一个对象内定义,可以在对象内部的任何地方使用,同一个类的所有实例共享一个共享变量。
3.实例变量
在一个对象内定义,只能在这个对象内部使用
4.局部变量
就是在脚本层定义的变量,只能用于脚本层,且在脚本层的末尾被删除
变量的优先级:局部变量、实例变量、全局变量、共享变量
10.存储过程的声明及使用
10.0 存储过程按返回值分为两类,一类 有返回值,我们把它看成函数;另一类没有返回值,我们称作过程。函数型存储过程使用function关键字,过程型存储过程使用subroutine关键字。
函数型存储过程的声明语法为:
function rtndatatype functionname ({{ref} datatype1 arg1,...{ref} datatypen argn }) rpcfunc{ alias for "spname" }
rtndatatype返回值类型
functionname函数名称
ref关键字指明函数是传引用,省略该关键字则表示传值
datatype arg 表示参数的数据类型和参数名称
rpcfunc 关键字说明是数据库的存储过程说明,而不是动态连接库中外部函数的说明
alias for 关键字是给存储过程起别名,"spname"是别名的名称
例:
function double give_raise(ref double salary) rpcfunc alias for "give_raise_proc"
调用存储过程,double val=2000,double rv
rv=SQLCA.give_raise_proc(val)
11.变量的默认值
blob 默认为0
char 或character 默认值为0
boolean 默认值为 false
Date 默认值是1900-01-01
DateTime 默认值是 1900-01-01 00:00:00
数值类型(int,long,decimal,real,double,unsignedinteger,unsignedLong) 默认值为0
String 默认值是 空字符串("")
Time 默认值 00:00:00
12.条件语句
12.0 if语句 
12.1 单行 if ...then  格式为
 if cond then action1 
 else action2
当cond为true时 执行action1,否则执行action2
12.2  多行 if ...then  格式为 
 if  condition1  then action1 
 elseif  condition2  then action2
 else action3  
 end if
例:if parentCorrect>=90 then
            grade="a"
       elseif  parentCorrect>=80 then 
            grade="b"
       elseif  parentCorrect>=70  then
            grade="c"
       elseif parentCorrect>=60 then
            grade="d"
        else
            grade="d"
        end if
13.  choose case 语句
choose case testexpression
        case expressionlist
            statementblock
        case expressionlist
            statementblock
        case else 
            statementblock
end choose
testexpression 是测试表达式,expressionlist是判断表达式,statementblock是执行语句块
判断表达式可以使用如下的形式:
是用逗号分隔的数据,例如:2,4,7
用To 表示一个区间范围,例如:2 To 15
用IS 代表测试值,后跟关系运算符和比较值,例如:IS>30
例:
choose case parentCorrect
case IS >=90
     grade="A"
case 80 To 89
     grade="B"
case 70 To 79
     grade="C"
case 60 To 69
     grade="D"
case else
     grade="E"
end choose
14. 循环语句
14.1 do...loop循环
do... loop 循环提供了四种形式,分别为:
do until codition...loop
do while condition...loop 
do ... loop until condition
do ... loop while condition
do 表示循环的开始,loop 表示循环的结束,condition表示循环条件,是逻辑表达式,其值为true或false
do until condition ... loop的语法格式为:
do until condition
    statements
loop 
condition条件为false则执行 statemets语句,接着检查条件,直到为true时退出循环
do while condition ... loop的语法格式为:
do while condition
     statements
loop
condition执行条件为true时则执行statements语句,接着检查条件,直到为false时退出循环
do... loop until condition的语法格式为:
do 
    statements
loop until condition
do ... loop while condition的语法格式为:
do
    statements
loop while condition
14.2 for ...next循环
for ...next是循环次数确定的循环结构,使循环体的语句执行规定的次数
for varname=start to end [step increment]
    statements
next
varname是循环变量,可以为任意的数值,start,end分别为循环变量的初始值和终止值,increment是每次循环后循环变量的步长增量,默认是1
例:
int ii_aar[50]
int sum
int i
for i=1 to 50
    sum+=ii_aar[i]
next
15.Call语句的使用
call语句用来调用祖先对象的事件或祖先对象的控件上的事件
Call语句的语法为:
call ancestorobject {controlname} ::event {(argumentlist)}
ancestorobject是祖先对象的名称
controlname 事件名称
event 指定要调用的事件名称
argumentlist 指定事件参数,参数类型、个数由具体事件确定。如果事件要求参数,调用时没有提供参数,系统将默认设置参数值为NULL
例:调用祖先窗口的Open事件
Call w_emp::open
调用祖先窗口上命令按钮cb_close的click事件处理
Call w_emp cb_close :: Clicked
16. MessageBox函数的使用
MessageBox 函数常用于显示出错、警告及其它重要的信息,其语法格式为:
MessageBox(title,text{,Icon{,Button{,Default}}})
大括号中的部分可以省略,title表示标题,text是指显示在窗口的文本。
Icon指定在窗口中显示的图标,是枚举类型,取值为:
Information!、StopSign!、Exclamation!、Quetion!、None!
Information是Icon的默认值
Button参数指定在窗口中显示哪些按钮,有效取值为:
OK!   "确定"按钮
OKCance! "确定"、"取消"按钮
YesNo!  "是"、"否"按钮 
YesNoCancel   "是"、"否"、"取消"按钮
RetryCancel!    "重试"、"取消"  按钮
AbortRetryIgnore!   “终止"、"重试"、"忽略"  按钮
Default  参数指定哪个按钮是默认按钮,即用户按下键盘上的Enter键时,执行哪个按钮的
clicked事件,用户数字1、2、3表示,默认是1
MessageBox的返回值是用户按下的 按钮序号,通过判断返回值能够知道用户按了哪个按钮
例:li_rc=MessageBox('保存修改','你修改了数据窗口的数据,现在是否保存?',&
Quetion!,YesNoCancel!)
 
17.  数据类型转换
17.1字符串转换成数值类型
Integer(String),将字符串转换成Integer
Long(String),将String转换成Long
Real(String),将String转换成Real
Double(String),将String转换成Double
Dec(String),将String转换成Dec
17.2 数值类型转换成字符串
String(number,format),number是任意一种数值类型, format是转换后的格式
例:amount=12345678,String(amount,'$###,##0.00') 转换后为$123,456.78
18.运行其它应用程序的Run
其语法格式为:Run(String{,windowstate})
windowstate的取值为Maximized、Minimized、Normal
Run执行成功返回1、否则返回-1
18、设置焦点函数SetFocus
19. SQL语句介绍
     1.建立和断开数据库的连接,使用connect
     语法格式为:
     connect  {using transactionobject}
     transactionobject表示事务对象,如果省略则默认使用SQLCA
     断开数据库连接语法为:
     disconnect  {using transactionobject}
     2.提交与回滚事务
     提交事务的语法为:
     commit {using transactionObject}
     回滚事务的语法为:
     rollback {using transactionObject}
     3.单行查询语句select
        语法格式:
        select fieldlist into varlist from tableList 
        where  criteria  {using transactionObject}
        例:int emp_num
        select  employee.Emp_Lname,employee.Emp_name
        into :sle_Lname.Text, :sle_Fname.Text 
        from Employee
        where employee.Emp_nbr= :emp_num

powerScript脚本的更多相关文章

  1. 为Dynamics 365启用部署级的跟踪以及跟踪文件的定期删除

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复260或者20170712可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  2. PowerScript SQL语句

    PowerScript支持在脚本中使用标准的嵌入式SQL和动态SQL语句.还支持在SQL语句中使用数据库管理系统的语句.函数和保留字. 在SQL中任何地点都可以使用常量和任何合法的变量,但使用变量时必 ...

  3. Apache执行Python脚本

    由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...

  4. SQL Server镜像自动生成脚本

    SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...

  5. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  6. 探真无阻塞加载javascript脚本技术,我们会发现很多意想不到的秘密

    下面的图片是我使用firefox和chrome浏览百度首页时候记录的http请求 下面是firefox: 下面是chrome: 在浏览百度首页前我都将浏览器的缓存全部清理掉,让这个场景最接近第一次访问 ...

  7. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  8. Java 8 的 Nashorn 脚本引擎教程

    本文为了解所有关于 Nashorn JavaScript 引擎易于理解的代码例子. Nashorn JavaScript 引擎是Java SE 8的一部分,它与其它像Google V8 (它是Goog ...

  9. 【开源】.Net 动态脚本引擎NScript

    开源地址: https://git.oschina.net/chejiangyi/NScript 开源QQ群: .net 开源基础服务  238543768 .Net 动态脚本引擎 NScript   ...

随机推荐

  1. Sublime text 取消记住上一次打开的,这功能太墨迹了!

    比较恨,这sublime text的配置全部都是配置文件. 选择菜单:Preferences->Settings-User,增加配置项 //热退出,其实实现一种模拟没有退出的状态,当程序再次启动 ...

  2. 腾讯QQ企业邮箱在ruby on rails 框架中的mailer配置

    在编写ruby on rails程序时,我们可能会需要用到发送邮件的程序,如果使用gmail进行smtp发送一般问题不大,但很多企业使用的是腾讯QQ企业邮箱.使用该邮箱进行链接时出现各种错误,goog ...

  3. 堆栈中的EIP EBP ESP

    EIP,EBP,ESP都是系统的寄存器,里面存的都是些地址.  为什么要说这三个指针,是因为我们系统中栈的实现上离不开他们三个.  我们DC上讲过栈的数据结构,主要有以下特点:  后进先处.(这个强调 ...

  4. web系统之session劫持解决

    session劫持是一种比较复杂的攻击方法.大部分互联网上的电脑多存在被攻击的危险.这是一种劫持tcp协议的方法,所以几乎所有的局域网,都存在被劫持 可能. 两台主机要想进行TCP通信,必须经过一个三 ...

  5. 宏基5750G 不能用内置无线网卡上网

    宏基5750G 不能用内置无线网卡上网 具体体现在: 1.--> 搜索不到无线网络: 2.点击“打开网络和共享中心”-->没有“管理无线网络”一项.如果正常的话应该是这样的: 3.“我的电 ...

  6. C# 常用的工具类

    编码解码.图片与byte[].日志文件写入和读取 /// <summary> /// 将字符串编码为Base64字符串 /// </summary> /// <param ...

  7. 常见的排序算法之Java代码解释

    一 简要介绍 一般排序均值的是将一个已经无序的序列数据重新排列成有序的 常见的排序分为: 1 插入类排序 主要就是对于一个已经有序的序列中,插入一个新的记录.它包括:直接插入排序,折半插入排序和希尔排 ...

  8. iOS开发中@selector的理解

    @selector 是什么? 1一种类型 SEL2代表你要发送的消息(方法), 跟字符串有点像, 也可以互转.: NSSelectorFromString() / NSSelectorFromStri ...

  9. linux入门教程(一) 关于linux的历史

    很多关于linux的书籍在前面章节中写了一大堆东西来介绍linux,可惜读者看了好久也没有正式开始进入linux的世界,这样反而导致了他们对linux失去了一些兴趣,而把厚厚的一本书丢掉. Linux ...

  10. 找啊找啊找GF

    P1013 找啊找啊找GF 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 MM七夕模拟赛 描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手, ...