2.8.4.4 O--R
ON-ERROR (On-Error)
没用过
OPEN {(E)} (Open File for Processing) 打开文件
Factory 1 Operation Factory 2 Result HI LO EQ
OPEN 文件名
OPEN 后面的目标,必须是在当前程序中已声明的文件名(不是文件的记录格式名),
而且在OPEN 操作之后,在程序结束之前之前,必须有对应的CLOSE 操作。
使用OPEN 操作,文件在声明时,必须使用USROPN 关键字(详见D 行说明)。
ORxx (Or) 逻辑判断—或
Factory 1 Operation Factory 2 Result HI LO EQ
FLD01 IFGT FLD03
FLD01 OREQ FLD02
等价于
IF FLD01>FLD03 OR FLD01=FLD02
与IF、IFxx,AND、ANDxx 类似,培训机构出来的程序员真的强吗RPGLE 的写法OR,比RPG 的写法ORxx 要灵活,
而且可以用来表达一些复杂的逻辑关系。有鉴于此,所以通常IF 语句中,我会以OR 为主,
基本不用ORxx。如果在编程序方面,公司/项目组无硬性要求,那我觉得还是少用ORxx 吧,
总觉得这种写法的逻辑关系看起来不直接,尤其是有很复杂的AND,OR 时。
OTHER (Otherwise Select) 分支语句的判断
与分支语句SELECT 一起使用,表示不符合上述所有条件时的操作,如下:
Factory 1 Operation Factory 2 Result HI LO EQ
SELECT
WHEN 条件判断1
处理语句1
WHEN 条件判断2
处理语句2
OTHER
处理语句3
ENDSL
在这个例子中,当满足条件判断1 时,运行处理语句1,运行结束后跳至ENDSL 处;
如果不满足条件判断1,则程序继续向下执行,判断是否满足条件判断2。
当满足条件判断2 时,运行处理语句2,跳至ENDSL;当不满足
当不满足条件判断2 时,程序继续向下执下,当读到OTHER 操作码时,无条件运
行处理语句3(即当程序当前不满足以上所以条件判断时,则执行OTHER 之后的语句。
处理语句允许有很多句;
条件判断可以写得很复杂,也允许对不同的字段进行判断;比如说C 语言也有分支语
句switch,但是这个语句只能对一个字段进行分支判断,ILE 语言与它不同,允许对不同的
字段进行判断
就我目前掌握的测试情况,上述的SELECT—WHEN--OTHER—ENDSL,其实也可以
写做:
IF 条件判断1
处理语句1
ELSEIF 条件判断2
处理语句2
ELSE
处理语句3
ENDIF
即WHEN 与ELSEIF 是类似的,这样说,应该可以明白了吧。
总之,SELECT—ENDSL 是一个很好用的语法,尤其是在表示很多不同的分支处理时。
OUT {(E)} (Write a Data Area)
没用过,讲数据域的。
PARM (Identify Parameters) 定义入口参数
Factory 1 Operation Factory 2 Result HI LO EQR
*ENTRY PLIST
PARM FLD01
关于具体内容讲解,详见前面所说“入口参数”一章。
允许做为入口参数的有:普通变量、结构变量、数组变量
关于PARM、PLIST,还有一种在Factory 1, Factory 2 也填写变量或指示器的用
法,不过我不知道它具体表示什么意思,也不知道该怎么用。请用过的来补充。
PLIST (Identify a Parameter List) 同上
POST {(E)} (Post)
没用过
READ {(N | E)} (Read a Record) 读取记录
1. 基本语法:
Factory 1 Operation Factory 2 Result HI LO EQ
READ 文件记录格式名 45 46
READ后面跟的,必须是声明的文件记录格式名;
LO 指示器表示锁表指示器,当在指定的时间(CHGPF,WAITRCD 项可看到),
需要读取的记录仍被锁,将会打开LO 指示器,即*IN45=’1’;
EQ指示器为是否读到指示器。当未读到任何记录时,打开EQ 指示器,即*IN46=’1’
2. 当文件在程序中,是用只读的方式声明时,READ 操作并不会造成锁表;
如果文件在程序中是用修改的方式声明,READ 操作成功后,该记录被锁;直到执
行解锁操作(UNLOCK,或UPDATE),或READ 该文件的其它记录,才会解锁
如果文件是用修改的方式声明,但希望READ 操作不锁表时,那么就用READ(N),
即
Factory 1 Operation Factory 2 Result HI LO EQ
READ(N) 文件记录格式名 45 46
这样读文件,就不会锁记录,但是同时也不能修改记录。如果需要修改记录,那么
在修改之前(包括对文件字段赋值之前),还必须再对该记录进行一次定位操作(比如
CHAIN、READ 语句均可)。也就是说,如果要修改记录,必须先锁住当前记录(很合
理吧)
3. 当执行READ 操作时,程序是根据游标当前在文件中所指向的位置,顺序读取下
一条记录。关于游标是如何指向,还不是一个很简单的问题,所以将会在下一章“数
据库相关知识”中具体讲解。
4. 执行READ 操作时,允许声明的文件没有键值。(即PF 文件)
READC {(E)} (Read Next Changed Record)
没用过,读下一次修改过的记录?
READE {(N | E)} (Read Equal Key) 读取键值相等的记录
语法与READ 操作码大致一样,这里不再重复,只说不同的:
假设程序中已声明逻辑文件PFFHSL3(键值为FHS01+FHS02)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论