现在的位置: 首页 > 综合 > 正文

Powerbuilder PBD Syntax

2017年12月08日 ⁄ 综合 ⁄ 共 11108字 ⁄ 字号 评论关闭

/////////////////////////////////////////////////
a.各种对象存放编译后数据的框架(结构);ok
b.变量申明和初始值;ok
c.文字和数字字面量; ok
d.赋值操作; ok
e.混合运算; ok
f.函数和事件调用;
g.特殊语法分析,如if,for,while,try...catch,throws等;
h.sql语法嵌入和变量绑定。
i.综合调试

1A 01 05 00 1B 00 06 00 7D 00 00 00  a=b

1A 01 05 00 1B 00 06 00 01 01 00 00 00 00  a+=b

1A 01 05 00 1B 00 06 00 08 01 00 00 00 00  a -=b

1A 01 05 00 1B 00 06 00 0F 01 00 00 00 00  a *=b

1A 01 05 00 1B 00 06 00 16 01 02 00 40 00 01 00 a /=b
40 00 02 00 6B 00 8F 00 01 00 7D 00 00 00 

1A 01 05 00 1B 00 06 00 31 00 01 00 00 00 3C 00  //a=b+1 -2 /3 *4
02 00 52 00 35 00 10 00 00 00 35 00 08 00 00 00
6B 00 35 00 18 00 00 00 64 00 49 00 02 00 5D 00
8F 00 01 00 7D 00 00 00

31 00 FF FF 00 00 8B 00 01 00 00 00 00 00 B1 01 //return 65535
00 00 01 00 00 00  

//int a
//int b

a=b
a+=b
a -=b
a *=b
a /=b
a=b+1 -2 /3 *4

return 65535

0000156ah: 31 00 01 00 00 00 8B 00 01 00 00 00 01 00 00 00
0000157ah: 31 00 0A 00 00 00 8B 00 01 00 00 00 01 00 00 00
0000158ah: 31 00 64 00 00 00 8B 00 01 00 00 00 01 00 00 00
0000159ah: 31 00 E8 03 00 00 8B 00 01 00 00 00 01 00 00 00
000015aah: 31 00 10 27 00 00 8B 00 01 00 00 00 01 00 00 00
000015bah: 31 00 A0 86 01 00 8B 00 01 00 00 00 01 00 00 00
000015cah: 31 00 40 42 0F 00 8B 00 01 00 00 00 01 00 00 00
000015dah: 31 00 80 96 98 00 8B 00 01 00 00 00 01 00 00 00
000015eah: 31 00 00 E1 F5 05 8B 00 01 00 00 00 01 00 00 00
000015fah: 31 00 00 CA 9A 3B 8B 00 01 00 00 00 01 00 00 00
0000160ah: FF 01 08 00 00 00 F2 01 01 00 00 00 01 00 00 00
0000161ah: FF 01 10 00 00 00 F2 01 01 00 00 00 01 00 00 00
0000162ah: FF 01 18 00 00 00 F2 01 01 00 00 00 01 00 00 00
0000163ah: FF 01 20 00 00 00 F2 01 01 00 00 00 01 00 00 00
0000164ah: FF 01 28 00 00 00 F2 01 01 00 00 00 01 00 00 00
0000165ah: FF 01 30 00 00 00 F2 01 01 00 00 00 01 00 00 00
0000166ah: FF 01 38 00 00 00 F2 01 01 00 00 00 01 00 00 00
0000167ah: FF 01 40 00 00 00 F2 01 01 00 00 00 01 00 00 00
0000168ah: FF 01 48 00 00 00 F2 01 01 00 00 00 01 00 00 00
0000169ah: FF 01 50 00 00 00 F2 01 01 00 00 00 01 00 00 00

return 1
return 10
return 100
return 1000
return 10000
return 100000
return 1000000
return 10000000
return 100000000
return 1000000000
return 10000000000
return 100000000000
return 1000000000000
return 10000000000000
return 100000000000000
return 1000000000000000
return 10000000000000000
return 100000000000000000
return 1000000000000000000
return 10000000000000000000 

1A 01 05 00 31 00 01 00 00 00 8B 00 01 00 7D 00    //a=1
00 00
1A 01 05 00 31 00 01 00 00 00 8B 00 01 00 7D 00
00 00
1A 01 05 00 31 00 01 00 00 00 8B 00 01 00 7D 00
00 00
1A 01 05 00 31 00 01 00 00 00 8B 00 01 00 7D 00
00 00
1A 01 05 00 31 00 01 00 00 00 8B 00 01 00 7D 00
00 00
1A 01 05 00 31 00 01 00 00 00 8B 00 01 00 7D 00
00 00
1A 01 05 00 31 00 01 00 00 00 8B 00 01 00 7D 00
00 00
1A 01 05 00 31 00 01 00 00 00 8B 00 01 00 7D 00
00 00
1A 01 05 00 31 00 01 00 00 00 8B 00 01 00 7D 00
00 00
1A 01 05 00 31 00 01 00 00 00 8B 00 01 00 7D 00  //a=1
00 00

31 00 01 00 00 00 8B 00 01 00 00 00 01 00 00 00    //return 1
 

1A 01 05 00 31 00 01 00 00 00 31 00 02 00 00 00   //a=1+2+3+4+5+6+7+8+9+10
52 00 31 00 03 00 00 00 52 00 31 00 04 00 00 00
52 00 31 00 05 00 00 00 52 00 31 00 06 00 00 00
52 00 31 00 07 00 00 00 52 00 31 00 08 00 00 00
52 00 31 00 09 00 00 00 52 00 31 00 0A 00 00 00
52 00 8B 00 01 00 7D 00 00 00

1A 01 05 00 31 00 01 00 00 00 31 00 02 00 00 00   //a=1 -2 -3 -4 -5 -6 -7 -8 -9 -10
59 00 31 00 03 00 00 00 59 00 31 00 04 00 00 00
59 00 31 00 05 00 00 00 59 00 31 00 06 00 00 00
59 00 31 00 07 00 00 00 59 00 31 00 08 00 00 00
59 00 31 00 09 00 00 00 59 00 31 00 0A 00 00 00
59 00 8B 00 01 00 7D 00 00 00

1A 01 05 00 31 00 01 00 00 00 31 00 02 00 00 00   //a=1 *2*3*4*5*6*7*8*9*10
60 00 31 00 03 00 00 00 60 00 31 00 04 00 00 00
60 00 31 00 05 00 00 00 60 00 31 00 06 00 00 00
60 00 31 00 07 00 00 00 60 00 31 00 08 00 00 00
60 00 31 00 09 00 00 00 60 00 31 00 0A 00 00 00
60 00 8B 00 01 00 7D 00 00 00

1A 01 05 00 35 00 10 00 00 00 35 00 08 00 00 00   //a=1/2/3/4/5/6/7/8/9/10
6B 00 35 00 18 00 00 00 6B 00 35 00 20 00 00 00
6B 00 35 00 28 00 00 00 6B 00 35 00 30 00 00 00
6B 00 35 00 38 00 00 00 6B 00 35 00 40 00 00 00
6B 00 35 00 48 00 00 00 6B 00 35 00 50 00 00 00
6B 00 35 00 58 00 00 00 6B 00 8F 00 01 00 7D 00
00 00

1A 01 05 00 31 00 01 00 00 00 31 00 02 00 00 00   //a=1^2^3^4^5^6^7^8^9^10
6E 00 31 00 03 00 00 00 6E 00 31 00 04 00 00 00
6E 00 31 00 05 00 00 00 6E 00 31 00 06 00 00 00
6E 00 31 00 07 00 00 00 6E 00 31 00 08 00 00 00
6E 00 31 00 09 00 00 00 6E 00 31 00 0A 00 00 00
6E 00 8B 00 01 00 7D 00 00 00

31 00 01 00 00 00 8B 00 01 00 00 00 01 00 00 00
00 00 00 00 01 00 04 00 00 00 05 00 5A 00 06 00
B4 00 07 00 0E 01 08 00 70 01 0C 00 CA 01 10 00
64 00 08 00 

//BA 00 05 00 02 00                              //len=186 lines=5
1B 00 05 00 31 00 00 00 00 00 3C 00 02 00 C5 00  //if a>0 then return 1
02 00 24 00 31 00 01 00 00 00 8B 00 01 00 00 00
01 00 00 00

1B 00 05 00 31 00 00 00 00 00 3C 00 02 00 D1 00 //if a<0 then return 1
02 00 24 00 31 00 01 00 00 00 8B 00 01 00 00 00
01 00 00 00

1B 00 05 00 31 00 00 00 00 00 3C 00 02 00 D1 00   if a<0 then
02 00 28 00 31 00 01 00 00 00 8B 00 01 00 00 00     return 1
01 00 00 00 03 00 38 00 31 00 FF 00 00 00 8B 00     else
01 00 00 00 01 00 00 00                              return 255
                          end if
                              

1B 00 05 00 31 00 00 00 00 00 3C 00 02 00 C5 00  //if a>0 then return 2
02 00 48 00 31 00 02 00 00 00 8B 00 01 00 00 00
01 00 00 00

1B 00 05 00 31 00 00 00 00 00 3C 00 02 00 C5 00  //if a>0 then return 3
02 00 6C 00 31 00 03 00 00 00 8B 00 01 00 00 00
01 00 00 00

1B 00 05 00 31 00 00 00 00 00 3C 00 02 00 C5 00  //if a>0 then return 4
02 00 90 00 31 00 04 00 00 00 8B 00 01 00 00 00
01 00 00 00

1B 00 05 00 31 00 00 00 00 00 3C 00 02 00 C5 00  //if a>0 then return 5
02 00 B4 00 31 00 05 00 00 00 8B 00 01 00 00 00
01 00 00 00

38 00 08 00 00 00 30 01 01 00 38 00 10 00 00 00   //messagebox("test111","test222")
30 01 01 00 BC 01 9B 00 B9 40 BD 01 9B 00 02 00 
00 00 38 01 02 00 13 00

31 00 01 00 00 00 8B 00 01 00 00 00 01 00 00 00  //return 1
     

//function
00001564h: xxxxxxxxxxxxxxxxx 38 00 08 00 00 00 30 01 01 00 //FileExists("d:/123.txt")
00001574h: BC 01 33 00 B9 40 BD 01 33 00 01 00 00 00 38 01
00001584h: 01 00 13 00

00001564h: xxxxxxxxxxxxxxxxx 38 00 08 00 00 00 30 01 01 00 //FileExists("d:/123.txt")
00001574h: BC 01 33 00 B9 40 BD 01 33 00 01 00 00 00 38 01 //FileExists("d:/123.txt")连续2行
00001584h: 01 00 13 00 38 00 13 00 00 00 30 01 01 00 BC 01
00001594h: 33 00 B9 40 BD 01 33 00 01 00 00 00 38 01 01 00
000015a4h: 13 00 

00001564h: xxxxxxxxxxxxxxxxx 38 00 08 00 00 00 30 01 01 00 //FileMove("d:/123.txt","d:125.txt")
00001574h: 38 00 13 00 00 00 30 01 01 00 BC 01 35 00 B9 40
00001584h: BD 01 35 00 02 00 00 00 38 01 02 00 13 00                                             
                                       
00001564h: xxxxxxxxxxxxxxxxx 1B 00 05 00 36 01 01 00 BC 01 //FileExists(ls_filepath)
00001574h: 33 00 B9 40 BD 01 33 00 01 00 00 00 38 01 01 00
00001584h: 13 00 

00001564h: xxxxxxxxxxxxxxxxx 1B 00 05 00 A9 01 06 00 BC 01 //FileRead(li_fileno,lbb)
00001574h: 3C 00 B9 40 BD 01 3C 00 02 00 00 00 B6 01 01 00
00001584h: 38 01 02 00 13 00

000018ceh: xxxxxxxxxxxxxxxxx 1E 00 05 00 A9 01 06 00 BC 01 //FileRead(li_fileno,lbb)
000018deh: 43 00 CD 40 BD 01 43 00 02 00 00 00 B6 01 01 00 //pb11.2编译,用于对比
000018eeh: 3B 01 02 00 14 00                                                         

00001564h: xxxxxxxxxxxxxxxxx 1B 00 06 00 36 01 01 00 BC 01 //FileExists(ls_filepath2)
00001574h: 33 00 B9 40 BD 01 33 00 01 00 00 00 38 01 01 00
00001584h: 13 00 
00001564h: xxxxxxxxxxxxxxxxx 1B 00 06 00 36 01 01 00 BC 01 //FileDelete(ls_filepath2)
00001574h: 32 00 B9 40 BD 01 32 00 01 00 00 00 38 01 01 00
00001584h: 13 00
00001564h: xxxxxxxxxxxxxxxxx 1B 00 06 00 36 01 01 00 BC 01 //FileLength(ls_filepath2)
00001574h: 34 00 B9 40 BD 01 34 00 01 00 00 00 38 01 01 00
00001584h: 13 00   
00001564h: xxxxxxxxxxxxxxxxx 1B 00 06 00 36 01 01 00 BC 01 //FileLength(ls_filepath2)连续5行
00001574h: 34 00 B9 40 BD 01 34 00 01 00 00 00 38 01 01 00
00001584h: 13 00 

00001564h: xxxxxxxxxxxxxxxxx 1A 01 05 00 1B 00 07 00 36 01 //aaa=integer(ls_aaa)
00001574h: 01 00 BC 01 6D 00 B9 40 BD 01 6D 00 01 00 00 00
00001584h: 38 01 01 00 7D 00 00 00
00001594h: xxxxxxxxxxxxxxxxx 1A 01 06 00 1B 00 07 00 36 01 //bbb= long(ls_aaa)
00001594h: 01 00 BC 01 86 00 B9 40 BD 01 86 00 01 00 00 00
000015a4h: 38 01 01 00 7F 00 00 00
00001564h: xxxxxxxxxxxxxxxxx 1B 00 07 00 36 01 01 00 BC 01 //integer(ls_aaa)
00001574h: 6D 00 B9 40 BD 01 6D 00 01 00 00 00 38 01 01 00
00001584h: 13 00
00001584h: xxxxxxxxxxxxxxxxx 1B 00 07 00 36 01 01 00 BC 01 //long(ls_aaa)
00001594h: 86 00 B9 40 BD 01 86 00 01 00 00 00 38 01 01 00 //86 00 B9 40 fn in
00001594h: 13 00 

00001494h: xxxxxxxxxxxxxxxxx 1A 01 02 00 31 00 01 00 00 00 //rtn = gf_ok(1,1,3.2,"test")
000014a4h: 8B 00 01 00 31 00 01 00 00 00 33 00 10 00 00 00
000014b4h: 4D 00 01 00 38 00 08 00 00 00 30 01 01 00 BC 01
000014c4h: 01 00 01 80 BD 01 13 00 04 00 00 00 38 01 04 00 //01 00 01 80 fn out
000014d4h: 7D 00 00 00
000014d4h: xxxxxxxxxxxxxxxxx 1A 01 02 00 31 00 02 00 00 00  //rtn = gf_ok2(2,2,5.2,"test2")
000014e4h: 8B 00 01 00 31 00 02 00 00 00 33 00 20 00 00 00 
000014f4h: 4D 00 01 00 38 00 30 00 00 00 30 01 01 00 BC 01 
00001504h: 02 00 01 80 BD 01 13 00 04 00 00 00 38 01 04 00 
00001514h: 7D 00 00 00 
000014d8h: xxxxxxxxxxxxxxxxx 1A 01 02 00 31 00 02 00 00 00  //rtn = gf_ok2(2,2,5.2,"test2")第一个参
000014e8h: 31 00 02 00 00 00 33 00 20 00 00 00 4D 00 01 00  //由int改为long
000014f8h: 38 00 30 00 00 00 30 01 01 00 BC 01 02 00 01 80 
00001508h: BD 01 13 00 04 00 00 00 38 01 04 00 7D 00 00 00

00001494h: xxxxxxxxxxxxxxxxx 1A 01 02 00 FF 01 10 00 00 00 //rtn = gf_ok(1000000000000000,1,3.2,"test")
000014a4h: F2 01 01 00 31 00 01 00 00 00 33 00 18 00 00 00 //rtn = gf_ok2(2000000000000000,2,5.2,"test2")
000014b4h: 4D 00 01 00 38 00 08 00 00 00 30 01 01 00 BC 01
000014c4h: 01 00 01 80 BD 01 13 00 04 00 00 00 38 01 04 00
000014d4h: 7D 00 00 00
000014d4h: xxxxxxxxxxxxxxxxx 1A 01 02 00 FF 01 28 00 00 00 
000014e4h: F4 01 01 00 31 00 02 00 00 00 33 00 30 00 00 00 
000014f4h: 4D 00 01 00 38 00 40 00 00 00 30 01 01 00 BC 01   //BC 01: call fn 02: fn id
00001504h: 02 00 01 80 BD 01 13 00 04 00 00 00 38 01 04 00 
00001514h: 7D 00 00 00                                          

0000146fh: xxxxxxxxxxxxxxxxx 1A 01 02 00 FF 01 08 00 00 00  //int rtn
0000147fh: F2 01 01 00 7D 00 00 00              //rtn = 2000000000000
0000146fh: xxxxxxxxxxxxxxxxx 1A 01 02 00 31 00 FA FF 00 00 //int rtn
0000147fh: 8B 00 01 00 7D 00 00 00                         //rtn = 65530
0000146fh: xxxxxxxxxxxxxxxxx 1A 01 02 00 31 00 FA FF 00 00 //long rtn
0000147fh: 7F 00 00 00                                     //rtn = 65530

0000146fh: xxxxxxxxxxxxxxxxx 1A 01 02 00 38 00 08 00 00 00 //rtn = "2000000000000000000"
0000147fh: 30 01 01 00 85 00 00 00

0000146fh: xxxxxxxxxxxxxxxxx 1A 01 02 00 31 00 FB 00 00 00 //rtn = 251*252*(253+254)/255
0000147fh: 31 00 FC 00 00 00 60 00 31 00 FD 00 00 00 31 00
0000148fh: FE 00 00 00 52 00 60 00 35 00 08 00 00 00 49 00
0000149fh: 02 00 6B 00 98 00 01 00 7F 00 00 00
 
0000146fh: xxxxxxxxxxxxxxxxx 1A 01 02 00 35 00 10 00 00 00 //rtn = 1/2
0000147fh: 35 00 08 00 00 00 6B 00 8F 00 01 00 7D 00 00 00 //注意:除数自动变成小数了 
0000146fh: xxxxxxxxxxxxxxxxx 1A 01 02 00 35 00 10 00 00 00 //rtn = 1/3
0000147fh: 35 00 08 00 00 00 6B 00 8F 00 01 00 7D 00 00 00

0000146fh: xxxxxxxxxxxxxxxxx 1A 01 02 00 33 00 08 00 00 00 //rtn = 1.11/3.14
0000147fh: 33 00 18 00 00 00 69 00 8D 00 01 00 7D 00 00 00 
0000146fh: xxxxxxxxxxxxxxxxx 1A 01 02 00 31 00 01 00 00 00 //int rtn;rtn = 1+3
0000147fh: 31 00 03 00 00 00 52 00 8B 00 01 00 7D 00 00 00 //8B 00 01 00 tp conv
0000146fh: xxxxxxxxxxxxxxxxx 1A 01 02 00 31 00 01 00 00 00 //long rtn;rtn = 1+3
0000147fh: 31 00 03 00 00 00 52 00 7F 00 00 00             //7F 00 00 00 7D 00 00 00 cp
0000146fh: 2C 00 02 00 03 00 1A 01 02 00 33 00 08 00 00 00 //decimal rtn
0000147fh: 33 00 18 00 00 00 69 00 81 00 00 00             //rtn = 1.11/3.14 not tp conv

000014a7h: xxxxxxxxxxxxxxxxx 1A 01 02 00 31 00 01 00 00 00 //rtn = gf_ok(1,1,1.12,"test")
000014b7h: 8B 00 01 00 31 00 01 00 00 00 33 00 08 00 00 00
000014c7h: 4D 00 01 00 38 00 18 00 00 00 30 01 01 00 BC 01
000014d7h: 01 00 01 80 BD 01 13 00 04 00 00 00 38 01 04 00
000014e7h: 3C 00 01 00 7F 00 00 00
 
000014e7h: xxxxxxxxxxxxxxxxx 1A 01 02 00 31 00 01 00 00 00 //rtn = gf_ok2(1,1,1.12,"test")
000014f7h: 8B 00 01 00 31 00 01 00 00 00 33 00 20 00 00 00  
00001507h: 4D 00 01 00 38 00 18 00 00 00 30 01 01 00 BC 01  
00001517h: 02 00 01 80 BD 01 13 00 04 00 00 00 38 01 04 00 
      3C 00 01 00 7F 00 00 00
     
00001537h: xxxxxxxxxxxxxxxxx 1A 01 02 00 31 00 01 00 00 00 //rtn = gf_ok3(1,1,1.12,"test")
00001537h: 8B 00 01 00 31 00 01 00 00 00 33 00 30 00 00 00
00001547h: 4D 00 01 00 38 00 18 00 00 00 30 01 01 00 BC 01
00001557h: 03 00 01 80 BD 01 13 00 04 00 00 00 38 01 04 00
00001567h: 3C 00 01 00 7F 00 00 00

在末尾是函数列表:上面三个恰好是编号为引用1-3个函数,注意系统内部函数不在此列出。
00001670h: 00 00 00 00 00 00 00 20 20 20 20 20 20 20 00 6C ; .......       .l
00001680h: 66 5F 63 6F 75 6E 74 00 67 66 5F 6F 6B 00 67 66 ; f_count.gf_ok.gf
00001690h: 5F 6F 6B 32 00 67 66 5F 6F 6B 33 00 50 00 00 00 ; _ok2.gf_ok3.P... 

0000146fh: xxxxxxxxxxxxxxxxx 1A 01 02 00 38 00 08 00 00 00 //rtn = long(integer(reverse(trim("123"))))
0000147fh: A3 01 00 00 BC 01 54 01 B9 40 BD 01 54 01 01 00
0000148fh: 00 00 39 01 01 00 38 01 01 00 BC 01 6D 00 B9 40
0000149fh: BD 01 6D 00 01 00 00 00 38 01 01 00 BC 01 86 00
000014afh: B9 40 BD 01 86 00 01 00 00 00 38 01 01 00 7F 00
000014bfh: 00 00  

000014a3h: xxxxxxxxxxxxxxxxx A6 01 10 00 BC 01 A6 00 B9 40 //open(w_1) BC 01 fn call
000014b3h: BD 01 A6 00 01 00 00 00 B6 01 01 00 38 01 01 00 //A6 00 B9 40 fn open
000014c3h: 13 00  
000014a3h: xxxxxxxxxxxxxxxxx 2C 00 10 00 BC 01 12 00 B9 40 //close(w_1)
000014b3h: BD 01 12 00 01 00 00 00 38 01 01 00 13 00
000014a3h: xxxxxxxxxxxxxxxxx 2C 00 10 00 29 00 10 00 00 00 //w_1.hide()
000014b3h: 00 00 00 00 38 01 01 00 13 00                  
000014a3h: xxxxxxxxxxxxxxxxx 2C 00 10 00 38 00 08 00 00 00 //w_1.triggerevent("open")
000014b3h: 30 01 01 00 29 00 1C 00 00 00 01 00 00 00 38 01
000014c3h: 02 00 13 00 
000014a3h: xxxxxxxxxxxxxxxxx 2C 00 10 00 38 00 08 00 00 00 //w_1.postevent("open")
000014b3h: 30 01 01 00 29 00 18 00 00 00 01 00 00 00 38 01
000014c3h: 02 00 13 00   
000014a3h: xxxxxxxxxxxxxxxxx 2C 00 10 00 1D 00 10 00 00 00 //w_1.ls_1 = "TTT'
000014b3h: 1F 01 01 00 38 00 18 00 00 00 30 01 01 00 85 00
000014c3h: 02 00                                                                                                                            

抱歉!评论已关闭.