RPG编程同C语言编程的比较Word下载.docx

上传人:b****3 文档编号:7160826 上传时间:2023-05-08 格式:DOCX 页数:37 大小:27.99KB
下载 相关 举报
RPG编程同C语言编程的比较Word下载.docx_第1页
第1页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第2页
第2页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第3页
第3页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第4页
第4页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第5页
第5页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第6页
第6页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第7页
第7页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第8页
第8页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第9页
第9页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第10页
第10页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第11页
第11页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第12页
第12页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第13页
第13页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第14页
第14页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第15页
第15页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第16页
第16页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第17页
第17页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第18页
第18页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第19页
第19页 / 共37页
RPG编程同C语言编程的比较Word下载.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

RPG编程同C语言编程的比较Word下载.docx

《RPG编程同C语言编程的比较Word下载.docx》由会员分享,可在线阅读,更多相关《RPG编程同C语言编程的比较Word下载.docx(37页珍藏版)》请在冰点文库上搜索。

RPG编程同C语言编程的比较Word下载.docx

Dmystruds

Dname20a

Dage3s0

Dmemo44a

Daddr120a

Dtel12132a

Dtel23342a

Dmystruds68

Dage3s0

Daddr20aoverlay(memo:

1)

Dtel112aoverlay(memo:

21)

Dtel212aoverlay(memo:

33)

Dname20a

Dage3s0

Dmemo44a

Daddr20aoverlay(memo)

Dtel112aoverlay(memo:

*next)

Dtel212aoverlay(memo:

Dother12a

多重数据结构及使用

Dmystrudsoccurs(10)inz

Daddr20aoverlay(memo)

*next)

Dother12a

Dcnts2s0inz(*zero)

C*给第一个mystru赋值

C1occurmystru

Cevalname='

高殿华'

Cevalage=30

Cevaladdr='

河北省吴桥县'

Cevaltel1='

'

Cevaltel2='

Cevalother='

12121212'

C*给第二个mystru赋值

C2occurmystru

C*等同于

Ceval%occur(mystru)=2

河北省吴桥县1111'

C*依次访问每个数组元素

Cforcnt=1to2

Ccntoccurmystru

Caddrdsply

Cendfor

外部描述数据结构

DDSNameEDSEXTNAME(FileName)INZ

Extname(filename:

{fmtname})关键字用来引用filename中的记录格式,如未制定记录格式名,则默认第一个记录格式名。

文件状态数据结构

FFileNameCFEWORKSTNINFDS(FileDS)

DFileDSDS

DFileSt*STATUS

数据域

数据类型包括*CHAR,*DEC和*LGL三种。

如果指定因子2,则它必须包含正在引用的OS/400数据区。

若未指定因子2,则将结果字段用作数据区名称。

结果字段必须包含字段、数据结构、数据结构子字段或数据区数据结构。

这与为检索因子2中指定数据区中的数据并将数据写至此数据区,而与IN和OUT操作一起使用的名称同名。

在结果字段中指定数据区数据结构时,VisualAgeRPG应用程序在程序开始时检索数据区中的数据,并在程序结束时将数据写至数据区。

1》本地数据域*LDA

2》程序初始化参数数据域*PDA

3》外部描述数据域

例子1、

Dst_bufds60inz

Dname30

Daddr30

C*DTAARADEFINEdataareast_buf

C*锁定数据区dataare,读取信息到st_buf中,并显示,然后赋于新值

C*LOCKINst_buf

CnameDSPLY

CaddrDSPLY

Cevalname='

gaodianhua

Cevaladdr='

wuqiao'

COUTst_buf

CUNLOCKst_buf

CEVAL*INLR='

1'

CRETURN

例子2:

DINFOS60A

C*数据区名称为:

dataarea

C*DTAARADEFINEdataareaINFO

C*锁定数据区,读取信息到INFO中,并显示,然后赋值于‘GAODIANHUA’

C*LOCKININFO

CINFODSPLY

CEVALINFO='

GAODIANHUA

COUTINFO

CUNLOCKINFO

IN:

读数据区,当因子1是*LOCK时,则设置了读锁,不允许更新。

OUT:

写入数据区,当因子1是*LOCK时,写操作后数据区保持锁定状态,当因子1为BLANK时,数据区更新后解锁。

UNLOCK:

对IN或OUT锁定的数据区解锁.

7、常量

十六进制文字的格式是:

x'

x1x2...xn'

x'

必须包含字符a-f、a-f和0-9。

日期文字的格式为d'

xxxxxx'

,其中:

d指示文字是日期类型的

xxxxxx是有效日期,其格式为控制规范上指定的格式

xxxxxx包围在单引号('

)中。

时间文字的格式为t'

t指示该文字是时间类型的

xxxxxx是有效时间,其格式为控制规范上指定的格式

时间戳记文字的格式为z'

yyyy-mm-dd-hh.mm.ss.mmmmmm'

z指示该文字是时间戳记类型的

yyyy-mm-dd是有效日期(年-月-日)

hh.mm.ss.mmmmmm是有效时间(小时.分钟.秒.毫秒)

yyyy-mm-dd-hh.mm.ss.mmmmmm括在单引号中

毫秒是可选的,若未指定,则缺省为0

命名常量:

可以代const

dupperc'

abcdefghijklmnopqrstuvwxyz'

dlowercconst('

象征常数:

*all'

x..'

*allg'

k1k2'

*allu'

xxxxyyyy'

*allx'

x1..'

*blank/*blanks,*hival,*loval,*null,*on/*off,*zero/*zeros

循环

dcounts3s0inz(*zero)

dsums5s0inz(*zero)

1.for

cforcount=0to100

cevalsum=sum+count

cendfor

csumdsply

ceval*inlr='

creturn

2.dow

cevalcount=0

cevalsum=0

cdowcount<

=100

cevalcount=count+1

cenddo

3.dou

cdoucount>

100

cevalsum=sum+count

cevalcount=count+1

中断

leave

进行下一次循环

iter

选择结构

cifnot(sum>

=5049andcount>

=100)

c10000dsply

celseifsum=5049

c10001dsply

celseifsum=5051

c10002dsply

celse

c10003dsply

c*实现了嵌套

cifsum=5050

c10004dsply

cifsum>

5049

c10005dsply

celse

c10006dsply

cendif

c10007dsply

c*实现了组选择

cselect

cwhensum=5051

c'

hhhh'

dsply

cwhensum=5050

oooo'

cother

pppp'

cendsl

跳转语句

goto

cgototag1

c…

ctag1tag

c….

逻辑运算

and

or

not

算数运算

+

-

*

/

%rem()/*例子见后面*/

关系运算

>

<

=

**

函数及原型的概念

1、主过程

EXAM10的源码

Dvar1s10s0

Dvar2s10s0

Dresults15s0

C*entryplist

Cparmvar1

Cparmvar2

Cparmresult

Cevalresult=var1+var2

Ceval*inlr='

Creturn

主过程由F、D、I、C、O规范表组成,使用’*ENTRYPLIST’语句指定模块入口参数。

如果在控制表上没有标定NOMAIN关键字,模块入口参数还可以被指定为目标程序的入口参数,使用CALL或CALLB操作码来调用。

Cevalvar1=100

Cevalvar2=200

Ccall'

EXAM10'

Cresultdsply

2、子过程

(1)、有返回值,在调用时当作函数使用

原型说明

库名:

hbrccu

文件:

exam

成员:

aaaa

Dresults10i0inz(*zero)

Das10i0

Dbs10i0

D*原型说明

Dfunctionpr10i0

Da10i0value

Db10i0value

Cevala=10

Cevalb=10

C*有返回值,当作函数使用

Cevalresult=function(a:

b)

CEVAL*INLR=*ON

bbbb

Hnomain

D*原型说明(加粗部分为过程或函数的返回值说明,也可以没有返回值)

Dfunctionpr10i0

Dresults10i0

D*子过程接口的定义(加粗部分表明可以被外部程序调用)

PfunctionBexport

Dfunctionpi10i0

Cevalresult=a+b

Creturnresult

PfunctionE

开始编译:

CRTRPGMODMODULE(HBRCCU/FUNC1)SRCFILE(HBRCCU/EXAM)SRCMBR(BBBB)

CRTRPGMODMODULE(HBRCCU/MAIN)SRCFILE(HBRCCU/EXAM)SRCMBR(AAAA)

CRTPGMPGM(HBRCCU/FUNCTION)MODULE(HBRCCU/MAINHBRCCU/FUNC1)

编译完成。

(2)、没有返回值,使用CALLP调用(注意加粗部分的调用)

Dfunctionpr

Dresult10i0

Ccallpfunction(a:

b:

result)

Hnomain

PfunctionBexport

Dfunctionpi

PfunctionE

运行function后显示20.

注意:

(1)在加粗斜体部分,如果改成如下:

Dresult10i0value

则表明是值传递,在function中调用改变不影响其外部的值。

运行后显示0.注意value是值传递。

(2)export表明定义的这个子过程可以被外部调用。

假如没有export关键字,在执行

报错。

算数函数或操作码

1、add

cl0n01factor1+++++++opcode&

extfactor2+++++++result++++++++len++d+hiloeq

c1addsumsum

c*相当于

cevalsum=sum+1

2、sub

csumsub1sum

cevalsum=sum-1

csumdsply

3、mult

c3mult2sum

cevalsum=3*2

4、div

c12div3sum

cevalsum=12/3

5、%rem()取余

cevalcount=%rem(13:

3)

ccountdsply

c14div3sum

cmvrcount

ccountdsply

c*注意:

mvr只能用在div操作码的后面,不能用在evalsum=14/3的后面,编译报错

6、move和movel

Move自右向左取值赋值给int,并右靠齐

Movel自左向右取值赋值给int,并左靠齐

Dchar1s1ainz(*blank)

Dints2s0inz(*zero)

Cevalchar1='

Cmovelchar1int

Cintdsply

此时字符串实际长度小于数字长度,movel时,此时int显示

DSPLY10

Cmovechar1int

此时字符串实际长度小于数字长度,move时,此时int显示

DSPLY1

Dchar1s2ainz(*blank)

12'

此时字符串实际长度等于数字长度,movel和move时,此时int都显示

DSPLY12

Dchar1s3ainz(*blank)

123'

此时字符串实际长度大于数字长度,movel时,此时int显示

move时,此时int显示

DSPLY23

当int向char移动时也遵循这个结果.

函数比较

一、字符函数

dbs20ainz(*blank)

dcs50ainz(*blank)

1、字符串连接

cevala='

gaodianhua'

cevalb='

isagoodboy'

cevalc=a+b

ccdsply

c*c的值dsply为gaodianhuaisagoodboy

cevala=%trim(a)+%trimr(b)

cadsply

2、扫描字符串

cevalpos=%scan('

oo'

:

a:

1)

cifpos=0

notfound'

cposdsply

cendif

3、%check(comparator:

base{:

start}):

在base串中查找第一个不在comparator中存在的字符的位置,如果base中的所有字符均在comparator中存在,则返回0。

%checkr(comparator:

start}):

在base串中查找最后一个不在comparator中存在的字符的位置,如果base中的所有的字符均在comprator中存在,则返回0。

4、%SUBST(字符串:

开始位置{:

长度})返回自变量字符串的一部分。

它也可用作带EVAL操作码的赋值的结果

5、%STR(基指针{:

最大长度})(右边)

%STR(基指针:

最大长度)(左边)

%alloc(number)

Deallocptr1

%realloc(ptr:

number)

Number必须是不带小数的非浮点数。

%STR既可以用来获取以NULL结束的字符串(当在表达式的右边使用时,此函数返回第一个参数指向的数据,直至(但不包括)指定长度中找到的第一个空字符(x'

00'

)。

可在字符表达式有效的位置处使用此内置函数。

在运行时,若在指定的长度中找不到NULL终止符,则不出错。

在此情况下,结果值的长度与指定的长度相同。

),又可以用来存储以NULL结束的字符串(当在表达式的左边使用时,%STR(ptr:

length)将表达式右边的值赋给指针指向的存储器,并在尾部添加以NULL结束的字节。

可指定的最大长度是65535。

这表示最多可使用右边的65534字节,因为必须为末尾的NULL终止符保留1个字节。

对基指针操作,务必现分配空间或赋值一个已分配空间的地址。

Dptr1s*

Dbufs20abased(ptr2)

Cevalptr1=%alloc(20)

Ceval%str(ptr1:

20)=’gaodianhua’

Cevalptr2=%alloc(20)

Cevalbuf=’gaodianhua’

C*与下面的结果相同

Ceval%str(ptr2:

举例:

Dptr1s*

Dbufs20a

Cevalptr1=%alloc(20)

20)='

gaodianhuaisagoodboy'

Cevalbuf=%str(ptr1:

20)

C*或evalbuf=%str(ptr1)

Cbufdsply

Cdeallocptr1

或如下例子

Dptr2s*

Dbufs30abased(ptr1)

Dbuf1s20a

Cevalptr2=%alloc(20)

Cevalptr1=%alloc(%size(buf))

Cevalbuf='

Ceval%str(ptr2:

20)=%str(p

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2