没有合适的资源?快使用搜索试试~ 我知道了~
RPG编程同C语言编程的比较.docx
0 下载量 64 浏览量
2022-12-17
13:33:06
上传
评论
收藏 69KB DOCX 举报
温馨提示
试读
31页
RPG编程同C语言编程的比较.docx
资源推荐
资源详情
资源评论
用法
ile rpg例子
变量声明
1、 整数(i(整数)、b (二进制)、s(区位十进制)、p (压缩十进制))
i(整数)只可为3、5、10、20个字节长。
dposls5i 0inz(*zero)
dpos2slOi 0inz(*zero)
dpos3s3i 0inz(*zcro)
dpos4s20i 0inz(*zero)
注意
s(区位十进制)
dpos5s16s 0 inz(*zero)
2、 浮点数
只能定义为4字节和8字节
dfls4finz(*zero)
df2s8fin z(* zero)
cevalf2=121212.12121212
cf2dsply
cevalfl=121212.12121212
cfldsply
注意在小数点位数必须为blanko
8字节相当于double
4字节相当于float
dsply +1.2l21212e+05
3、 字符串
das30a inz(*blank)
a单字节或多字节
n指示符,单字节
4、 数组
这里只说明运行时数组
darrays2s 0 dim(12)
引用array(下标),下标从1开始。
dcharrs5a dim(12)
5、 基指针
基指针必须为4字节,且必须与4字节边界对齐。
6、 结构
D ParmDSDS1024
D SFldl50
D SFld2200
D
C*ENTRYPList
CParmParmDS
C*这是我们经常使用的一种结构定义方式和使用方式,这种用于传递人口参数的数据结构,一定 不
能使用1NZ关键字。
Dints2s 0 inz(*zero )
Cevalcharl = '1'
Cmovelcharlint
Cintdsply
Ceval*inlr=T
Creturn
此时字符串实际长度小于数字长度,movel时,此时int显示
DSPLY 10
Dcharls1a inz(*blank)
Dints2s 0 inz(*zero )
Cevalcharl = '1'
Cmovecharlint
Cintdsply
Ceval*inlr='1'
Creturn
此时字符串实际长度小于数字长度,move时,此时int显示
DSPLY 1
Dcharls2a inz(*blank)
Dints2s 0 inz(*zero )
Cevalcharl ='12'
Cmovecharlint
Cintdsply
Ceval*inlr='1'
Creturn
此时字符串实际长度等于数字长度,movel和move时,此时int都显示
DSPLY 12
Dcharls3a inz(*blank)
Dints2s 0 inz(*zero )
Cevalcharl = '123'
Cmovelcharlint
Cintdsply
Ceval*inlr=1'
Creturn
此时字符串实际长度大于数字长度,movel时,此时int显示
DSPLY 12
move时,此时int显示
DSPLY 23
当int向char移动时也遵循这个结果.
函数比拟
一、 字符函数
das30ainz(*blank)
dbs20ainz(*blank)
des50ainz(*blank)
1、 字符串连接
C
eval
a='gaodianhua,
C
eval
b= is a good boy'
C
eval
c=a+b
CC
dsply
c*c的值dsply为
gaodianhua
is a good boy
C
eval
a=%trim(a)+%trimr(b)
c a
dsply
c*c的值dsply为
gaodianhua is a good boy
2、 扫描字符串
C
eval
pos=%scan(
,
oo':a:1)
C
if
pos = 0
c 'not found
1
dsply
c
else
c pos
dsply
c
endif
3、%check(comparator:base{:start}):在 base 串中查找第一个不在 comparator 中存 在的字符的位
置,如果base市的所看字符均在comparator中存在,那么返回0。
%checkr(comparator:base{:start}):在 base 串中查找最后一个不在 comparator 中存在的字符的位置,
如果base中面所有的字符均在comprator中存在,那么返回0。 4、%SUBST (字符串:开始位置{:长度})返
回自变量字符串的一局部。它也可用作带 EVAL操作码的赋值的结果5、%STR (基指针{:最大长度})(右边)
% S T R ( 基 指 针 : 最 大 长 度 ) ( 左 边 ) % a l l o c ( n u m b e r )
Deallocptr1%realloc(ptr:number)
Number /、须是不带小数的非浮点数。
%STR既可以用来获取以NULL结束的字符串(当在表达式的右边使用时,此函数返 回第一个参数
指向的数据,直至(但不包括)指定长度中找到的第一个空字符(xW)o 可在字符表达式有效的
位置处使用此内置函数。在运行时,假设在指定的长度中找不到 NULL终止符,那么不出错。在此
情况下,结果值的长度与指定的长度相同。),又可以用 来存储以NULL结束的字符串(当在表达
式的左边使用时,%STR(ptr:length)将表达 式右边的值赋给指针指向的存储器,并在尾部添加
以NULL结束的字节。可指定的最 大长度是65535o这表示最多可使用右边的65534字节,因为必
须为末尾的NULL 终止符保存1个字节。)。
对基指针操作,务必现分配空间或赋值一个已分配空间的地址。
Dptrls
★
Dbufs
20a based(ptr2)
C
eval
ptr1=%alloc(20)
C
eval
%str(ptr1:20)=
,
gaodianhua
,
C
eval
ptr2=%alloc(20)
C
c*与下面的结果相同
eval
buf=
,
gaodianhua
,
c
eval
%str(ptr2:20)=
,
gaodianhua
,
举例:
Dptrls*
Dbufs20a
Cevalptr1=%alloc(20)
Ceval%str(ptr1:20)='gaodianhua is a good boy'
Cevalbuf=%str(ptr1:20)
C* 或evalbuf=%str(ptr1)
Cbutdsply
Cdeallocptr1
Ceval*inlr='1'
Creturn
或如下例子
Dptr2s*
Dbufs30abased(ptrl)
Dbufls20a
Cevalptr2=%alloc(20)
Cevalptr1 =%alloc(%size(buf))
Cevalbuf='gaodianhua is a good boy,
Ceval%str(ptr2:20)=%str(ptr1:30)
Cevalbuf1=%str(ptr2)
C buf1dsply
Cdeallocptr2
Cdeallocptr1
Ceval*inlr='1'
Creturn
注意:
Darrs20a dim(5)
Dparrs* dim(5)
Dents3p 0
Cforcnt=1 to 5 by 1
Cevalarr(cnt)='gaodianhua'+%char(cnt)
Cendfor
Cevalparr=%addr(arr)
C*"%addr的参数是数组的名时,那么在基指针中存放的都是数组arr第一个元素C* 的地址
Cevalparr=%addr(arr(*))
(?当%2(13的参数是带下标(*)的数组名时,那么在基指针中存放的相应元素的地址
Cforcnt=1 to 5 by 1
Cevalgdh=%str(parr(cnt) :20)
C gdhdsply
Cendfor
6.%REPLACE (替换字符串:源字符串{:开始位置:要替换的源长度})
Dsrc_strs30ainz(*zero) VARYING
Drpl_strs15ainz(*zero) VARYING
剩余30页未读,继续阅读
资源评论
Mmnnnbb123
- 粉丝: 690
- 资源: 8万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功