ImageVerifierCode 换一换
格式:DOCX , 页数:77 ,大小:67.27KB ,
资源ID:8405164      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8405164.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(RPGLE 编程基础.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

RPGLE 编程基础.docx

1、RPGLE 编程基础RPGLE 编程基础本章主要介绍RPGLE语言的基础知识,包括规范表,操作码,编译方法等,通过本章的学习了解并初步掌握RPGLE的基本操作码并应用于简单编程,能编译程序并查看跟踪错误,能使用单步调试源码方法,并能读懂简单的RPGLE程序。1 RPGLE规范表 H表(Control):指定程序使用的数据区 F表(File Description):文件说明 I表(Input):说明输入文件记录结构和数据 C表(Calculation):程序主体 O表(Output):说明输出文件记录结构常用的表有F表,D表,C表2 操作码简介RPG程序设计语言允许对数据进行多种类型的操作。在

2、计算规范表中写入的操作码指出要做的操作,通常是操作的缩写。 下表概括说明了每个操作码。 一个空列表示此字段必须为空 所有下划线的字段都是必须的 一个下划线区域表明此位置没有结果指示器 符号 符号说明 (H) 四舍五入(整数的数值型结果) (N) 不锁定记录 (P) 用空格或零填充结果 (D) 操作描述符或日期字段 (T) 时间字段 (Z) 时间标记字段 + 正的 - 负的 BL 空格 BN 数值型空格 BOF 文件头 EOF 文件尾 EQ 等于 ER 错误 FD 找到 HI 大于 IN 指示器 LD 小于 LR 最后一个记录 NR 没有找到记录 NU 数字 OF off ON on Z 零 Z

3、B 零或空格操作码说明一览表操作码因子1因子2结果字段 结果指示器 71-7273-7475-76ACQ设备名WORKSTN文件ERADD(1/2)加数加数和+-ZADDDUR日期/时间期间:期间码日期/时间ERANDxx比较数比较数BEGSR子程序名BITOFF位数字符字段BITON位数字符字段CABxx比较数比较数标号HILOEQCALL程序名列表名ERLRCALLB(D)过程名或过程指针列表名ERLRCASxx比较数比较数子程序名HILOEQCAT(P)源串1源串2:空格数目的串CHAIN(N)查找自变量文件名数据结构NRERCHECK(2)比较串基串:开始最左边位置ERFDCHECKR

4、(2)比较串基串:开始最右边位置ERFDCLEAR*NOKEY*ALL结构或变量或记录格式CLOSE文件名ERCOMMIT边界ERCOMP(1)比较数比较数HILOEQDEFINE*LIKE参考字段定义字段DEFINE*DTAARA外部数据区内部字段DELETE查找自变量文件名NRERDIR(1/2)被除数除数商+-ZDO初值限定值索引值DOU 指示器表达式DOUxx比较数比较数DOW指示器表达式DOWxx比较数比较数DSPLY(4)信息输出队列响应ERDUMP标识符ELSEEND增量值ENDCSENDDO增量值ENDIFENDSLENDSR标号返回点EVAL结果=表达式EXCEPTEXCEP

5、T名EXFMT记录格式名EREXSR子程序名EXTRCT日期/时间:期间码目的字段ERFEOD文件名ERFORCE文件名GOTO标号IF指示器表达式IFxx比较数比较数IN*LOCK数据区名ERINERKFLD键字字段KLISTKLIST名LEAVELOOKUP(1)(数组)查找自变量数组名HILOEQLOOKUP(1)表查找自变量表名表名HILOEQMHHZO源字段目的字段MHLZO源字段目的字段MLHZO源字段目的字段MLLZO源字段目的字段MOVE(P)源字段目的字段+-ZBMOVEA(P)源字段目的字段+-ZBMOVEL(P)日期/时间格式源字段目的字段+-ZBMVLT(1/2)被乘数

6、乘数积+-ZMVR余数+-ZNEXT程序设备文件名EROCCUR出现值数据结构出现值ERORxx比较数比较数OTHEROUT*LOCK数据区名ERPARM目的字段源字段参数PLISTPLIST名POST(3)程序设备文件名INFDS名ERREAD(N)记录名,文件名数据结构EREOFREADC记录名EREOFREADE(N)查找自变量文件名,记录名数据结构EREOFREADP(N)文件名,记录名数据结构EREOFREADPE(N)查找自变量文件名,记录名数据结构EREOFREL程序设备文件名ERRESET*NOKEY*ALL结构或变量或记录格式ERRETURNSUB(1/2)减数被减数差+-Z

7、SUBDUR(期间)日期/时间日期/时间期间:期间码ERSUBDUR(新日期)日期/时间日期/时间日期/时间ERSUBST(P)选取长度基串:开始目的串ERTAG标号TEST(D)日期格式日期或字符字段或数字字段ERTEST(T)时间格式时间或字符字段或数字字段ERTEST(Z)时间标记或字符字段或数字字段ERTESTB(1)位数字符字段OFONEQTESTN(1)字符字段NUBNBLTESTZ(1)字符字段TIME数字字段UNLOCK数据区,记录或文件名ERUPDATE文件名数据结构ERWHEN指示器表达式WHENxx比较数比较数WRITE文件名数据结构EREOFXFOOT(1/2)数组名和

8、+-ZXLATE(P)从:至串:开始目的串ERZ-ADD(1/2)加数和+-ZZ-SUB(1/2)减数差+-Z3 程序代码行的编写3.1 最简单的RPGLE程序为便于理解,这里写一个最简单的RPGLE程序CL0N01Factor1+Opcode&ExtFactor2+Result+Len+D+HiLoEq * Beginning of data *0001.00 C HELLO WORLD DSPLY 0002.00 C RETURN * End of data *这个程序编译成功,并调用(CALL 程序名),就是在屏幕上反白显示“HELLO WORLD”字样。(其中,绿色字样,是系统自动显示

9、的,下同)与其他语言不同,RPGLE中的编码,是有一定的格式,如果写错,将会在当前代码行上高亮反绿显示。初学者如果不太清楚从何处开始下手,可以使用“F4”键查看(F4键只有用2进入的编辑状态才有效,用5进入的查看状态是无效的)Level N01 Factor 1 Operation Factor 2 Result HELLO WORLD DSPLY Decimal Length Positions HI LO EQ Comment 关于每一项所对应的内容代表什么意思,该如何填写,即如何写程序,将会在下面的具体讲解。3.2举例准备列出表名,字段,以方便下面的举例。假设有PF文件叫PFFHS,文件

10、的记录格式叫FMTFHS每条记录,都是由FHS01、FHS02、FHS03三个字段组成,每个字段都是两位长的字符型变量。逻辑文件PFFHSL1的键值为FHS01逻辑文件PFFHSL2的键值为FHS02逻辑文件PFFHSL3的键值为FHS01、FHS02文件的记录格式在RPGLE的程序中,不能与文件名相同。3.3简单的程序流程FPFFHS UF E DISK C READ FMTFHSC EVAL FHS01=”01”C UPDATE FMTFHS C SETON LR C RETURN这个程序的意思,是说读PFFHS这个文件,然后将读到的第一条记录中的FHS01这个字段的值修改为“01”。“S

11、ETON LR”,LR的位置可在HI、LO、EQ中任选一处。意思是指将打开指示器*INLR,即赋值使指示器*INLR的值等于1。等价于 “ EVAL *INLR=1 ”,意思是强制将内存中的数据写到磁盘中。(基于效率因素,系统在修改文件时,会先将修改的结果先放在内存中,在同一程序中,读取数据也是先从内存中查询。)LR,取自是Last Record从这个程序中, 可以看到,RPGLE的程序,大致上可以分为两个部分:1、 声明、定义部分:声明程序中使用到的文件(F行),定义程序中使用的变量(D行)2、 程序运行部分 :即C行,也就是程序段。在RPGLE程序中,F行必须在D行前面,D行必须在C行前面

12、。程序执行的起始顺序,将从定义部分之后,第一个C行开始,顺序向下执行。程序中的F行、D行都不是必须项,一个程序可以没有F行(如仅完成计算功能的公共函数,比如计算利息),也可以没有D行(没有需要特别定义的变量,或者所有变量都在C行进行定义),但不应该没有C行,因为F行与D行都属于非执行行,是起定义作用;C行是执行行。没有C行的程序,是无执行意义的。3.4常见的程序流程FPFFHS UF E DISK /声明文件PFFHSD LSFLD01 S 2 /定义临时变量LSFLD01C EVAL LSFLD01=01 /给变量LSFLD01赋值C EXSR SUB#UPD /执行子过程SUB#UPDC

13、EVAL LSFLD02=02 /给变量LSFLD02赋值C EXSR SUB#UPD /执行子过程SUBUPD C SETON LR /数据写入磁盘 C RETURN /程序结束 C SUB#UPD BEGSR /子过程SUB#UPD开始 C READ FMTFHS /读PFFHS文件 C EVAL FLD01=LSFLD01 /给字段FLD01赋值 C UPDATE FMTFHS /修改文件 C ENDSR /子过程结束 “/”后面的,只是简单的解释. 系统在运行这个程序时,是按如下的顺序来执行:1. 首句EVAL赋值语句,直接执行;2. 当系统发现操作码“EXSR”时,根据后面的变量名“

14、SUB#UPD”,去查找对应的“SUB#UPD BEGSR”语句;3. 然后从“SUB#UPD BEGSR”之后,顺序向下执行,直至“ENDSR”语句4. 执行到“ENDSR”之后,将会再回到当初的“EXSR SUB#UPD”处,继续向下执行,直到RETURN语句为止这里提出一点要注意,如果子过程中,又执行了自身,即在SUB#UPD程序中,又出现了“EXSR SUB#UPD”,是可以编译通过的,但在执行过程中,系统会因为无法定位,而出现死循环,直至报错异常中断退出。也就是RPGLE的程序中,子过程不允许出现递归。3.5 F行说明3.5.1 内容说明(需要以图表的形式详细描述待补充)首位填上F,

15、然后按F4,会出现如下内容: File File End of File Filename Type Designation File Addition Sequence File Record Limits Length of Record Format Length Processing Key Field Address Type File Organization Device Keywords Comment 各项的含义分别是:Filename: 需要声明的文件名,必须顶格,文件名必须唯一,也就是程序中对同样的文件名不能声明两次。File Type: 声明文件的处理类型。必须填写。允

16、许的选项有: I: 输入型,即只读文件,对声明的文件只取其记录的值,不对记录进行修改 U: 修改型,即对声明的文件进行修改操作(删除记录属于修改操作的一种) O: 输出型,即只写,对声明的文件只进行写操作。 C:混合型,用于对屏幕文件的定义。(混合型,即输入/输出型,以屏幕文件为便,也就是读取屏幕文件的一些输入字段信息,同时也可以输出一些字段的值到屏幕文件中,但不能对屏幕文件自身进行修改,所以与上面的U是有区别的)File Designation: 文件的指定方式,允许的选项有: 不填:表示这是一个输出文件,即“File Type”项为“O”时,此项不填 F:常用,简单的理解为不考虑cycle

17、(循环控制):当“File Type”为I,U,C时,这里填“F” 当“File Type ”为O时,这里不填写End of File: 程序结束前,对记录的处理方式。可以不填,或填“E”。File Addtion: 是否会增加文件中的记录,即是否会对文件进行写操作。可以不填,或填“A”当File Type为“O”时,系统自动默认此项为“A”,不必填写;当File Type为“I”,或“U”时,这项内容可以填“A”,也可以不填。不填,即表示不会增加文件中的记录,也就是没有写操作;填“A”时,即表示会增加文件中的记录,也就是会对文件进行写操作。Sequence: 针对cycle使用的,表示排序顺

18、序。 当定义为非cycle文件时,即“File Designation”项非“P”、“S”时,此项必须为空; 当定义为cycle文件时,即“File Designation”项为“P”、或“S”时,此项可填空、A、D。A表示升序,D表示降序。 因为CYCLE现在已不常用,所以通常不填。File Format 文件格式,不能为空,允许的值有: E: 声明的文件,是外部描述的文件 F: 声明的文件,是一个程序描述文件 这里通常填“E”,即为外部描述文件Record Length “File Format”为“F”时,才需要填写。 通常不填Limit Processing 通常不填。Length o

19、f Key Field 查询时,索引键值的长度 如果“File Format”项等于“E”,即外部描述文件时,此项不填 如果“File Format”项等于“F”,便不需要按KEY值查询时,此项也不填 如果“File Format”项等于“F”,需要按KEY值查询时,此项填写KEY值的长度(12000)。 因为一般都使用外部描述文件,所以这里一般都不填写。Record Address Type 记录寻址类型,好象是对文件键值的描述。允许的值如下: 空:不使用KEY值,在程序段中,不会对文件的查询定位操作,如“SETLL”、“CHAIN”操作码都不会用的时,该项填空。 K: 使用KEY值,即表示

20、会对声明的文件进行查询定位操作,此时声明的文件必须有键值,即必须为逻辑文件(LF文件),或在生成文件时,已加入了KEY值。(下面的选项应该是程序描述文件才会使用) A: KEY值为字符型 D:KEY值为日期型 F:KEY值为数字型 G:KEY值为非英文字符 P:KEY值为压缩型数字 T:KEY值为时间型 Z:KEY值为timestamp? 总之,如果要按照键值对声明的文件进行查询定位操作(即程序中使用了CHAIN、SETLL操作码,则此项需要填写“K”;如不需要进行查询操作,则不填。),此项填“K”时,声明的文件必须含有KEY值。Device 声明文件的存放位置,必须填写,允许的值有: DIS

21、K: 磁盘文件,即文件存储在磁盘上,最常见的; PRINTER: 打印文件,提供打印输出描述,以及对打印设备访问。打印报表用这个; WORKSTN: workstation,工作站,显示文件。屏幕文件(DSPF)的定义用这个值 Keyword 可以不填,常用的值有(这里只列出几个常用的): COMMIT 该文件记录的数据操作进行日志处理(关于日志处理,后面会章节会讲到) RENAME 对文件记录格式名进行重命名。比如说程序中需要同时声明PFFHSL1,PFFHSL2这两个逻辑文件。这两个逻辑文件的记录格式名都是一样(通常和PF一样,即都为FMTFHS;不过也可以定义成不同。如果不同,当然就不需

22、要使用RENAME键字了)。 那么,为了能让系统区分,就必须对其中一个的记录格式名进行重命名。RENAME的语法:RENAME(旧记录格式名:新记录格名),如下:FPFFHSL1 IF E DISKFPFFHSL2 IF E DISK RENAME(FMTFHS:FMTFHS2)新记录格式可以自由定义,只要在该程序中无同名的即可。RENAME并不会真正的更改文件的记录格式名,仅是在当前运行程序中进行重命名。对同时运行的其它程序无影响 USROPN 对于声明的文件,由用户自行打开。如果不填写此关键字,系统将会在程序最最开始(执行第一句C行语句前),自动执行“OPEN 文件” 的操作,在程序结束后

23、,自动执行“CLOSE 文件”的操作。而填写此关键字之后,OPEN,CLOSE的操作将由用户在C行程序段中,自行处理。如果用户未执行OPEN操作,就执行CHAIN、READ、SETLL等语句,在编译程序时就会报错。程序在结束之前,必须关闭所有已打开的文件,所以用起来会比较繁琐。USROPN常作用于对文件的解锁,在同一程序中打开同一文件的不同MEMBER等,属于一个较高级的用法,可在实际操作中慢慢体会。OPEN,CLOSE的操作码,对应的是文件名,不是记录格式名。即 C OPEN PFFHSL1 C CLOSE PFFHSL1 而不是 C OPEN FMTFHSComment 注释说明。源自RP

24、G,在RPG中是有作用的,可以对程序作简短的说明,但在RPGLE中,其实已经没有作用了,此项不用填。(填了也没用)小结:1 文件描述说明中的源列列位置内容顺序数15任选的顺序数或注释格式类型6F-文件描述说明注释标记7在本栏填入*以表示整行为注释行文件名716DB2400文件名文件类型17I-输入文件O-输出文件U-更新文件文件标示18空-若位置17为OF-若位置17为I或者U文件结尾19对全过程文件总是空的文件添加20空 在输入或者更新文件中不添加记录A 使用write 操作在输入或更新文件中添加记录(本列对输出文件无效)顺序21对于全过程文件总是空的文件格式22E- 标示外部描述文件记录长

25、度2327对于外部描述文件总是空的极限处理28对于全过程文件总是空的键标的长度2933对于外部描述文件总是空的记录地址类型34空 按RRN存取记录K - 按键值存取记录文件组织35对于外部描述文件总是空的设备3642Disk 标示数据库文件不用43注释行功能4480关键字项(待另表补充DB2/400 P108)2 I/O操作类型的F项操作类型文件类型(位17)文件标示(位置18)文件添加(位置20)Read、ReadP、ReadE ReadPEChain SetGT或SetLLI或UF空或者A(要求A是为了使用Write操作)WriteO空空WriteUFAUpdate或DeleteUF空或A(要求A是为了Write操作)3.5

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1