收藏 分享(赏)

ile程序员速成手册.doc

上传人:cjc2202537 文档编号:1411746 上传时间:2018-07-14 格式:DOC 页数:78 大小:375.50KB
下载 相关 举报
ile程序员速成手册.doc_第1页
第1页 / 共78页
ile程序员速成手册.doc_第2页
第2页 / 共78页
ile程序员速成手册.doc_第3页
第3页 / 共78页
ile程序员速成手册.doc_第4页
第4页 / 共78页
ile程序员速成手册.doc_第5页
第5页 / 共78页
点击查看更多>>
资源描述

1、1 简单说明 .32 程序代码行的编写 .32.1 最简单的 RPGLE 程序 .32.2 举例准备 .32.3 简单的程序流程 .42.4 常见的程序流程 .52.5 F 行说明 .52.5.1 内容说明 .52.5.2 常用例子 .92.5.3 补充说明 .92.6 D 行说明 .92.6.1 内容说明 .102.6.2 常用例子 .132.6.3 补充说明 .132.7 入口参数 .142.8 C 行说明 .162.8.1 写在前面 .162.8.2 内容说明 .162.8.3 ILE 操作码分类: .182.8.4 ILE 操作码 .192.8.4.1 A-C .192.8.4.2 D

2、-E.272.8.4.3 F-N.322.8.4.4 O-R .382.8.4.5 S-Z .423 和程序相关的数据库知识 .483.1 LF(逻辑文件) .483.1.1 逻辑文件概念 .483.1.2 有关编译的问题 .483.1.3 逻辑文件对效率的影响 .503.2 MEMBER .503.3 游标 .513.3.1 游标的概念 .513.3.2 不同操作码对应的游标的处理 .513.3.3 “有且仅有”的游标 .513.3.4 LOVAL、HIVAL 对应的游标操作 .523.4 事务处理 - COMMIT .533.4.1 概念描述 .533.4.2 使用方法 .533.4.3

3、注意事项 .543.5 关于锁表的问题 LCKW.544 DEBUG 调试以及常见出错信息 .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 运行时的出错信息 .615 CL、CMD .6

4、15.1 CL 程序 .615.1.1 基本认识 .615.1.2 CL 程序的常用语法及命令: .625.1.3 不常用的语法 .645.2 CMD .656 屏幕文件及使用 .667 其它 .667.1 报表打印 .667.2 SAVF,备份与恢复 .717.3 菜单-MENU .727.4 开发时常用的命令 .737.5 一点想法 .751 简单说明内部交流、或可作培训使用。并对用户作如下假定:1、 能 COPY、修改、编译源代码(RPGLE) ,并能运行编译后的程序2、 能 COPY、修改、编译文件(PF、LF 、PRTF 、DSPF) ;3、 对数据文件(PF)有简单的认识(FIEL

5、D RECORD PF MEMBER) ,并知道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”字样。 (其中,绿色字样,是系统自动显示的,下同)与自由风

6、格的 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 文件叫 PFF

7、HS,文件的记录格式叫 FMTFHS每条记录,都是由字段 FHS01、FHS02 、FHS03 三个字段组成,每个字段都是两位长的字符型变量。逻辑文件 PFFHSL1 的键值为 FHS01逻辑文件 PFFHSL2 的键值为 FHS02逻辑文件 PFFHSL3 的键值为 FHS01、FHS02注:文件的记录格式,可以理解为给这个文件整条记录起的一个名字;或者是说将每条记录视都视做一个类型相同大变量,然后给这个大变量起的名字。所以文件的记录格式信息中,包含有一条记录由多少个字段组成,总计长度是多少这样的信息。文件的记录格式,与各个字段同时定义。 (写文件的源码时)文件的记录格式在程序中,不能与文件

8、名相同。2.3 简单的程序流程为方便起见,系统自动显示的就不再贴出来了,只贴代码段。FPFFHS UF E DISK C READ FMTFHSC EVAL FHS01=”01”C UPDATE FMTFHSC SETON LRC RETURN这个程序的意思,是说读 PFFHS 这个文件,然后将读到的第一条记录中的 FHS01 这个字段的值修改为“01” 。“SETON LR”,LR 的位置可在 HI、LO 、EQ 中任选一处。意思是指将打开指示器*INLR ,即赋值使指示器 *INLR 的值等于 1。等价于 “ EVAL *INLR=1 ”,意思是强制将内存中的数据写到磁盘中。 (基于效率因

9、素,系统在修改文件时,会先将修改的结果先放在内存中,在同一程序中,读取数据也是先从内存中查询。 )LR,取自是 Last RecordRETURN,表示程序结束,在后面“操作码”一节中,会有讲述。新手如果不太明白,就记住C SETON LRC RETURN或C EVAL *INLR=1C RETURN这两句话加在一起,表示程序结束就可以了。从这个程序中,我们可以看到,RPGLE 的程序,大致上可以分为两个部分:1、 声明、定义部分:声明程序中使用到的文件(F 行) ,定义程序中使用的变量(D行)2、 程序运行部分 :即 C 行,也就是程序段。在 RPGLE 程序中,F 行必须在 D 行前面,D

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

11、VAL LSFLD01=01 /给变量 LSFLD01 赋值C EXSR SUB#UPD /执行子过程 SUB#UPDC EVAL LSFLD02=02 /给变量 LSFLD02 赋值C EXSR SUB#UPD /执行子过程 SUBUPDC SETON LR /数据写入磁盘C RETURN /程序结束C SUB#UPD BEGSR /子过程 SUB#UPD 开始C READ FMTFHS /读 PFFHS 文件C EVAL FLD01=LSFLD01 /给字段 FLD01 赋值C UPDATE FMTFHS /修改文件C ENDSR /子过程结束“/”后面的,只是简单的解释,如果自已动手写,

12、不需要输入这些内容。系统在运行这个程序时,是按如下的顺序来执行:1. 首句 EVAL 赋值语句,直接执行;2. 当系统发现操作码“EXSR”时,根据后面的变量名“SUB#UPD” ,去查找对应的“SUB#UPD BEGSR”语句;3. 然后从“SUB#UPD BEGSR”之后,顺序向下执行,直至“ENDSR”语句4. 执行到“ENDSR”之后,将会再回到当初的“EXSR SUB#UPD”处,继续向下执行,直到 RETURN 语句为止这里提出一点要注意,如果子过程中,又执行了自身,即在 SUB#UPD 程序中,又出现了“EXSR SUB#UPD”,是可以编译通过的,但在执行过程中,系统会因为无法

13、定位,而出现死循环,直至报错异常中断退出。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 Organization Device Keywords Comment 各项的含义分别是:(数了一下,居然有一半都不知道该怎么用)Filename:需要声

14、明的文件名,必须顶格,文件名必须唯一,也就是程序中对同样的文件名不能声明两次。File Type:声明文件的处理类型。必须填写。允许的选项有:I: 输入型,即只读文件,对声明的文件只取其记录的值,不对记录进行修改U: 修改型,即对声明的文件进行修改操作(删除记录属于修改操作的一种)O: 输出型,即只写,对声明的文件只进行写操作。C:混合型,常用于对屏幕文件的定义。 (不太明白 C 与 U 之差的差别)此项最常用的,是 I、U、OFile Designation:文件的指定方式,允许的选项有:不填:表示这是一个输出文件,即“File Type”项为 “O”时,此项不填P:表明声明的文件是主文件,

15、这个很少用,cycle 相关S:表明声明的文件是次文件,这个没用过,cycle 相关R:Record address file,记录地址文件?不懂,没用过T:数组或表文件?不懂,没用过F:常用,具体含义不知道该如何翻译(Full procedural file)简单来说,不考虑 cycle(cycle 这个对新手是不是难度有点大?),这样理解就够了:当“File Type ”为 I,U,C 时,这里填“F”当“File Type ”为 O 时,这里不填写End of File:程序结束前,对记录的处理方式。可以不填,或填“E” 。但从英文解释上来看,不敢妄下定论,似乎不填,表示在程序结束前,要

16、处理所有文件的所有记录(含 LF?) ;填E,表示只处理这个文件的所有记录?总之,此项一般是不填。File Addtion:是否会增加文件中的记录,即是否会对文件进行写操作。可以不填,或填“A”当 File Type 为 “O”时,系统自动默认此项为“A” ,不必填写;当 File Type 为“I” ,或“U ”时,这项内容可以填“A ”,也可以不填。不填,即表示不会增加文件中的记录,也就是没有写操作;填“A ”时,即表示会增加文件中的记录,也就是会对文件进行写操作。Sequence:针对 cycle 使用的,表示排序顺序。 (Cycle 我没有用过,不知道现在是不是已经不流行使用。希望能有

17、熟悉的贴一份详细的说明,或给个链接)当定义为非 cycle 文件时,即 “File Designation”项非 “P”、 “S”时,此项必须为空;当定义为 cycle 文件时,即 “File Designation”项为“P” 、或“S”时,此项可填空、A、D。A 表示升序,D 表示降序。通常不填。File Format文件格式,不能为空,允许的值有:E: 声明的文件,是外部描述的文件(即文件在程序运行之前就已存在?)F: 声明的文件,是一个程序描述文件?(不知道什么意思) ,没用过这里通常填“E” ,即为外部描述文件Record Length“File Format”为“F ”时,才需要填

18、写。没用过通常不填Limit Processing不懂。通常不填。Length of Key Field查询时,索引键值的长度(也不懂)如果“File Format”项等于 “E”,即外部描述文件时,此项不填如果“File Format”项等于 “F”,便不需要按 KEY 值查询时,此项也不填如果“File Format”项等于“F” ,需要按 KEY 值查询时,此项填写 KEY 值的长度(12000) 。因为一般都使用外部描述文件,所以这里一般都不填写。Record Address Type不知道该怎么翻译,好象是对文件键值的描述。允许的值如下:空:不使用 KEY 值,在程序段中,不会对文件

19、的查询定位操作,如“SETLL” 、“CHAIN”操作码都不会用的时,该项填空。K: 使用 KEY 值,即表示会对声明的文件进行查询定位操作,此时声明的文件必须有键值,即必须为逻辑文件(LF 文件) ,或在生成文件时,已加入了 KEY 值。(下面的选项我没用过,不知道该如何使用,好象是程序描述文件才会使用)A: KEY 值为字符型D:KEY 值为日期型F:KEY 值为数字型G:KEY 值为非英文字符P:KEY 值为压缩型数字T:KEY 值为时间型Z:KEY 值为 timestamp?总之,如果要按照键值对声明的文件进行查询定位操作(即程序中使用了CHAIN、SETLL 操作码,则此项需要填写“

20、K ”;如不需要进行查询操作,则不填。 ) ,此项填“K”时,声明的文件必须含有 KEY 值。File Organization不知道,一般不填Device声明文件的存放位置,必须填写,允许的值有:DISK: 磁盘文件,即文件存储在磁盘上,最常见的;PRINTER: 打印文件,提供打印输出描述,以及对打印设备访问。打印报表用这个;WORKSTN: workstation,工作站,显示文件。屏幕文件(DSPF)的定义用这个值(下面这两种我没用过的)SEQ: 磁带文件,文件存储在磁带上。SPECIAL: 特殊文件,我现在也不是很清楚具体使用方式,新手可以不看。据blogliou 说,这种类型,是允

21、许指定一种不能被 RPG 直接操作的输入 /输出设备。比如可以通过 SPECIAL 文件,在 RPGLE 程序中实现象读写磁盘一样,对 DTAQ 进行程序间数据交换。具体内容可看贴子Keyword可以不填,常用的值有(这里只列出几个常用的):COMMIT该文件记录的数据操作进行日志处理(关于日志处理,后面会章节会讲到)RENAME对文件记录格式名进行重命名。比如说程序中需要同时声明 PFFHSL1,PFFHSL2这两个逻辑文件。这两个逻辑文件的记录格式名都是一样(通常和 PF 一样,即都为FMTFHS;不过也可以定义成不同。如果不同,当然就不需要使用 RENAME 键字了) 。那么,为了能让系

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

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

24、,可以对程序作简短的说明,但在RPGLE 中,其实已经没有作用了,此项不用填。 (填了也没用)2.5.2 常用例子对文件进行只读的声明:FPFFHS IF E DISK 对文件进行修改的声明:FPFFHS UF E DISK 对文件进行只写的声明:FPFFHS O E DISK 对文件进行修改,以及增加记录的操作:FPFFHS UF A E DISK对文件进行查询,增加记录的操作,并对文件进行查询操作:FPFFHSL1 IF A E K DISK声明两个记录格式相同的文件,并对其中之一进行重命名FPFFHSL1 IF E K DISKFPFFHSL2 IF E K DISK RENAME(FMTFHS:FMTFHS2)注:在声明时,两个文件不一定要上下紧接着;随便改哪一个文件对应的记录格式都可以;新旧记录格式名用冒号隔开,新记录格式名可自行定义,无规则。对文件的修改操

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

当前位置:首页 > 实用文档 > 产品手册

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报