资源预览内容
第1页 / 共82页
第2页 / 共82页
第3页 / 共82页
第4页 / 共82页
第5页 / 共82页
第6页 / 共82页
第7页 / 共82页
第8页 / 共82页
第9页 / 共82页
第10页 / 共82页
亲,该文档总共82页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1简单说明32程序代码行的编写32.1最简单的RPGLE程序32.2举例准备32.3简单的程序流程42.4常见的程序流程52.5F行说明52.5.1内容说明52.5.2常用例子92.5.3补充说明92.6D行说明92.6.1内容说明102.6.2常用例子132.6.3补充说明132.7入口参数142.8C行说明162.8.1写在前面162.8.2内容说明162.8.3ILE操作码分类:182.8.4ILE操作码192.8.4.1A-C192.8.4.2D-E272.8.4.3F-N322.8.4.4O-R382.8.4.5S-Z423和程序相关的数据库知识483.1LF(逻辑文件)483.1.1逻辑文件概念483.1.2有关编译的问题483.1.3逻辑文件对效率的影响503.2MEMBER503.3游标513.3.1游标的概念513.3.2不同操作码对应的游标的处理513.3.3“有且仅有”的游标513.3.4LOVAL、HIVAL对应的游标操作523.4事务处理 - COMMIT533.4.1概念描述533.4.2使用方法533.4.3注意事项543.5关于锁表的问题 LCKW544DEBUG调试以及常见出错信息554.1写在前面554.2常规用法564.2.1程序编译564.2.2执行DEBUG命令564.2.3运行程序564.2.4在DEBUG模式中进行调试564.2.5跟踪被当前程序调用的程序574.2.6一定要退出DEBUG模式584.2.7补充584.3跟踪批处理程序( From qingzhou)584.4常见的出错信息594.4.1编译程序时的出错信息594.4.2运行时的出错信息615CL、CMD615.1CL程序615.1.1基本认识615.1.2CL程序的常用语法及命令:625.1.3不常用的语法645.2CMD656屏幕文件及使用667其它667.1报表打印667.2SAVF,备份与恢复717.3菜单-MENU727.4开发时常用的命令737.5一点想法751 简单说明内部交流、或可作培训使用。对用户作如下假定:1、 能COPY、修改、编译源代码(RPGLE、CLP),并能运行编译后的程序2、 能COPY、修改、编译文件(PF、LF、PRTF、DSPF);3、 对数据文件(PF)有简单的认识(FIELD RECORD PF),并知道LF与PF的对应关系。2 程序代码行的编写2.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”字样。(其中,绿色字样,是系统自动显示的,下同)与自由风格的C语言不同,RPGLE中的编码,是有一定的格式,如果写错,将会在当前代码行上高亮反绿显示。初学者如果不太清楚从何处开始下手,可以使用“F4”键查看(F4键只有用2进入的编辑状态才有效,用5进入的查看状态是无效的)Level N01 Factor 1 Operation Factor 2 Result HELLO WORLD DSPLY Decimal Length Positions HI LO EQ Comment 关于每一项所对应的内容代表什么意思,该如何填写,即如何写程序,将会在下面的具体讲解。2.2 举例准备列出表名,字段,以方便下面的举例。假设有PF文件叫PFFHS,文件的记录格式叫FMTFHS每条记录,都是由FHS01、FHS02、FHS03三个字段组成,每个字段都是两位长的字符型变量。逻辑文件PFFHSL1的键值为FHS01逻辑文件PFFHSL2的键值为FHS02逻辑文件PFFHSL3的键值为FHS01、FHS02注:文件的记录格式,可以理解为给这个文件整条记录起的一个名字;或者是说将每条记录视都视做一个类型相同大变量,然后给这个大变量起的名字。所以文件的记录格式信息中,包含有一条记录由多少个字段组成,总计长度是多少这样的信息。文件的记录格式,与各个字段同时定义。(写文件的源码时)文件的记录格式在RPGLE的程序中,不能与文件名相同。2.3 简单的程序流程为方便起见,系统自动显示的就不再贴出来了,只贴代码段。FPFFHS UF E DISK CREADFMTFHSCEVALFHS01=”01”CUPDATEFMTFHSCSETONLRCRETURN这个程序的意思,是说读PFFHS这个文件,然后将读到的第一条记录中的FHS01这个字段的值修改为“01”。“SETONLR”,LR的位置可在HI、LO、EQ中任选一处。意思是指将打开指示器*INLR,即赋值使指示器*INLR的值等于1。等价于“EVAL*INLR=1”,意思是强制将内存中的数据写到磁盘中。(基于效率因素,系统在修改文件时,会先将修改的结果先放在内存中,在同一程序中,读取数据也是先从内存中查询。)LR,取自是Last RecordRETURN,表示程序结束,在后面“操作码”一节中,会有讲述。如果不太明白,就记住CSETONLRCRETURN或CEVAL*INLR=1CRETURN这两句话加在一起,表示程序结束就可以了。从这个程序中,我们可以看到,RPGLE的程序,大致上可以分为两个部分:1、 声明、定义部分:声明程序中使用到的文件(F行),定义程序中使用的变量(D行)2、 程序运行部分 :即C行,也就是程序段。在RPGLE程序中,F行必须在D行前面,D行必须在C行前面。程序执行的起始顺序,将从定义部分之后,第一个C行开始,顺序向下执行。程序中的F行、D行都不是必须项,一个程序可以没有F行(如仅完成计算功能的公共函数,比如计算利息),也可以没有D行(没有需要特别定义的变量,或者所有变量都在C行进行定义),但不应该没有C行,因为F行与D行都属于非执行行,是起定义作用;C行是执行行。没有C行的程序,是无执行意义的。2.4 常见的程序流程FPFFHS UF E DISK /声明文件PFFHSD LSFLD01S2/定义临时变量LSFLD01CEVALLSFLD01=01/给变量LSFLD01赋值CEXSRSUB#UPD/执行子过程SUB#UPDCEVALLSFLD02=02/给变量LSFLD02赋值CEXSRSUB#UPD/执行子过程SUBUPDCSETONLR/数据写入磁盘CRETURN/程序结束CSUB#UPDBEGSR/子过程SUB#UPD开始CREADFMTFHS/读PFFHS文件CEVALFLD01=LSFLD01/给字段FLD01赋值CUPDATEFMTFHS/修改文件CENDSR/子过程结束“/”后面的,只是简单的解释,如果自已动手写,不需要输入这些内容。系统在运行这个程序时,是按如下的顺序来执行:1. 首句EVAL赋值语句,直接执行;2. 当系统发现操作码“EXSR”时,根据后面的变量名“SUB#UPD”,去查找对应的“SUB#UPDBEGSR”语句;3. 然后从“SUB#UPDBEGSR”之后,顺序向下执行,直至“ENDSR”语句4. 执行到“ENDSR”之后,将会再回到当初的“EXSRSUB#UPD”处,继续向下执行,直到RETURN语句为止这里提出一点要注意,如果子过程中,又执行了自身,即在SUB#UPD程序中,又出现了“EXSRSUB#UPD”,是可以编译通过的,但在执行过程中,系统会因为无法定位,而出现死循环,直至报错异常中断退出。也就是RPGLE的程序中,子过程不允许出现递归。2.5 F行说明2.5.1 内容说明首位填上F,然后按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
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号