IBM_AS400_RPG学习手册

2019-05-18 20:13

1 2

简单说明................................................................................................................... 3 程序代码行的编写..................................................................................................... 3 2.1 最简单的RPGLE程序 ................................................................................. 3 2.2 2.3 2.4 2.5

举例准备..................................................................................................... 3 简单的程序流程 .......................................................................................... 4 常见的程序流程 .......................................................................................... 5 F行说明 ..................................................................................................... 5 2.5.1 2.5.2 2.5.3 2.6

内容说明.............................................................................................. 5 常用例子.............................................................................................. 9 补充说明............................................................................................ 10

D行说明................................................................................................... 10 2.6.1 内容说明............................................................................................ 10 2.6.2 2.6.3

常用例子............................................................................................ 13 补充说明............................................................................................ 14

2.7 2.8

入口参数................................................................................................... 14 C行说明 ................................................................................................... 16 2.8.1 写在前面............................................................................................ 16 2.8.2 2.8.3 2.8.4

内容说明............................................................................................ 17 ILE操作码分类: .............................................................................. 18 ILE操作码 ......................................................................................... 19

2.8.4.1 A--C ............................................................................................ 19 2.8.4.2 D--E ............................................................................................ 27 2.8.4.3 F--N............................................................................................. 32

2.8.4.4 O--R ............................................................................................ 39 2.8.4.5 S--Z ............................................................................................. 43

和程序相关的数据库知识 ........................................................................................ 49 3.1 LF(逻辑文件)........................................................................................ 49

3.1.1 逻辑文件概念..................................................................................... 49

3.1.2 3.1.3 3.2 3.3

有关编译的问题 ..................................................... 错误!未定义书签。 逻辑文件对效率的影响....................................................................... 51

3

MEMBER ................................................................................................. 51 游标.......................................................................................................... 52 3.3.1 3.3.2 3.3.3

游标的概念 ........................................................................................ 52 不同操作码对应的游标的处理 ............................................................ 52 “有且仅有”的游标 .......................................................................... 53

3.3.4 LOVAL、HIVAL对应的游标操作 ....................................................... 53 3.4 事务处理 -- COMMIT ............................................................................... 54

3.4.1

3.4.2

概念描述............................................................................................ 54 使用方法............................................................................................ 54

4

3.4.3 注意事项............................................................................................ 55 3.5 关于锁表的问题 LCKW ............................................................................ 56 DEBUG调试以及常见出错信息............................................................................... 56

4.1 4.2

写在前面................................................................................................... 56 常规用法................................................................................................... 57 4.2.1 程序编译............................................................................................ 57 4.2.2 执行DEBUG命令 .............................................................................. 57 4.2.3 运行程序............................................................................................ 57 4.2.4 4.2.5 4.2.6 4.2.7

在DEBUG模式中进行调试 ................................................................ 58 跟踪被当前程序调用的程序................................................................ 58 一定要退出DEBUG模式 ................................................................... 59 补充................................................................................................... 59

4.3 4.4

跟踪批处理程序( From qingzhou) ............................................................... 60 常见的出错信息 ........................................................................................ 60 4.4.1

编译程序时的出错信息....................................................................... 60

5

4.4.2 运行时的出错信息.............................................................................. 62 CL、CMD............................................................................................................... 62 5.1

CL程序 .................................................................................................... 62 5.1.1 基本认识............................................................................................ 62 5.1.2 5.1.3

CL程序的常用语法及命令: .............................................................. 63 不常用的语法..................................................................................... 65

6 7

5.2 CMD......................................................................................................... 66 屏幕文件及使用 ...................................................................................................... 67 其它........................................................................................................................ 67 7.1 7.2 7.3 7.4 7.5

报表打印................................................................................................... 72 SAVF,备份与恢复 ................................................................................... 77 菜单--MENU ............................................................................................. 78 开发时常用的命令..................................................................................... 78 一点想法................................................................................................... 81

1 简单说明

内部交流、或可作培训使用。对用户作如下假定: 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 C READ FMTFHS C C

C

EVAL

FHS01=”01” FMTFHS

LR

UPDATE SETON

C RETURN

这个程序的意思,是说读PFFHS这个文件,然后将读到的第一条记录中的FHS01这个字段的值修改为“01”。 “SETON LR”,LR的位置可在HI、LO、EQ中任选一处。意思是指将打开指示器*INLR,即赋值使指示器*INLR的值等于1。等价于 “ EVAL *INLR=’1’ ”,意思是强制将内存中的数据写到磁盘中。(基于效率因素,系统在修改文件时,会先将修改的结果先放在内存中,在同一程序中,读取数据也是先从内存中查询。)LR,取自是Last Record

RETURN,表示程序结束,在后面“操作码”一节中,会有讲述。

如果不太明白,就记住 C C 或

C

SETON RETURN EVAL

LR

*INLR=’1’

C RETURN

这两句话加在一起,表示程序结束就可以了。

从这个程序中,我们可以看到,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 D LSFLD01 C

C C C

C C C C C C C

S

2

EVAL EXSR EVAL EXSR

LSFLD01=’01’ SUB#UPD LSFLD02=’02’ SUB#UPD

FMTFHS

//声明文件PFFHS //定义临时变量LSFLD01 //给变量LSFLD01赋值 //执行子过程SUB#UPD //给变量LSFLD02赋值 //执行子过程SUB#UPD LR

//数据写入磁盘

//程序结束 //子过程SUB#UPD开始 //读PFFHS文件 //给字段FLD01赋值 //修改文件 //子过程结束

SETON RETURN BEGSR READ EVAL UPDATE ENDSR

SUB#UPD

FLD01=LSFLD01 FMTFHS

“//”后面的,只是简单的解释,如果自已动手写,不需要输入这些内容。 系统在运行这个程序时,是按如下的顺序来执行: 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”,是可以编译通过的,但在执行过程中,系统会因为无法定位,而出现死循环,直至报错异常中断退出。也就是RPGLE的程序中,子过程不允许出现递归。

2.5 F行说明 2.5.1

内容说明

首位填上F,然后按F4,会出现如下内容:


IBM_AS400_RPG学习手册.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:邮政从业资格考试试卷2014

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: