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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

RPG AS400程序员培训手册Word格式文档下载.docx

1、假如不满足条件判定1,那么程序连续向下执行,判定是否满足条件判定2。当满足条件判定2 时,运行处理语句2,跳至ENDSL;当不满足 当不满足条件判定2 时,程序连续向下执下,当读到OTHER 操作码时,无条件运 行处理语句3即当程序当前不满足以上因此条件判定时,那么执行OTHER 之后的语句。处理语句承诺有专门多句;条件判定能够写得专门复杂,也承诺对不同的字段进行判定;比如说C 语言也有分支语 句switch,然而那个语句只能对一个字段进行分支判定,ILE 语言与它不同,承诺对不同的 字段进行判定 就我目前把握的测试情形,上述的SELECTWHEN-OTHERENDSL,事实上也能够 写做:I

2、F 条件判定1 ELSEIF 条件判定2 ELSE ENDIF 即WHEN 与ELSEIF 是类似的,如此说,应该能够明白了吧。总之,SELECTENDSL 是一个专门好用的语法,专门是在表示专门多不同的分支处理时。OUT (E) (Write a Data Area) 没用过,讲数据域的。PARM (Identify Parameters) 定义入口参数 Factory 1 Operation Factory 2 Result HI LO EQR *ENTRY PLIST PARM FLD01 关于具体内容讲解,详见前面所说入口参数一章。承诺做为入口参数的有:一般变量、结构变量、数组变量 关

3、于PARM、PLIST,还有一种在Factory 1, Factory 2 也填写变量或指示器的用 法,只是我不明白它具体表示什么意思,也不明白该如何用。请用过的来补充。PLIST (Identify a Parameter List) 同上 POST (E) (Post) READ (N | E) (Read a Record) 读取记录 1. 差不多语法:READ 文件记录格式名 45 46 READ后面跟的,必须是声明的文件记录格式名;LO 指示器表示锁表指示器,当在指定的时刻CHGPF,WAITRCD 项可看到, 需要读取的记录仍被锁,将会打开LO 指示器,即*IN45=1;EQ指示器

4、为是否读到指示器。当未读到任何记录时,打开EQ 指示器,即*IN46=1 2. 当文件在程序中,是用只读的方式声明时,READ 操作并可不能造成锁表;假如文件在程序中是用修改的方式声明,READ 操作成功后,该记录被锁;直到执 行解锁操作UNLOCK,或UPDATE,或READ 该文件的其它记录,才会解锁 假如文件是用修改的方式声明,但期望READ 操作不锁表时,那么就用READN, 即 READ(N) 文件记录格式名 45 46 如此读文件,就可不能锁记录,然而同时也不能修改记录。假如需要修改记录,那么 在修改之前包括对文件字段赋值之前,还必须再对该记录进行一次定位操作比如 CHAIN、RE

5、AD 语句均可。也确实是说,假如要修改记录,必须先锁住当前记录专门合 理吧 3. 当执行READ 操作时,程序是依照游标当前在文件中所指向的位置,顺序读取下 一条记录。关于游标是如何指向,还不是一个专门简单的问题,因此将会在下一章数 据库相关知识中具体讲解。4. 执行READ 操作时,承诺声明的文件没有键值。即PF 文件 READC (E) (Read Next Changed Record) 没用过,读下一次修改过的记录?READE (N | E) (Read Equal Key) 读取键值相等的记录 语法与READ 操作码大致一样,那个地点不再重复,只说不同的:假设程序中已声明逻辑文件PF

6、FHSL3键值为FHS01+FHS02 FHSKEY KLIST KFLD FLD01 KFLD FLD02 FHSKEY SETLL FMTFHS DOW 1=1 FHSKEY READE FMTFHS 15 IF *IN15=1 LEAVE ENDDO 这段话的意思,确实是定义组合键值FHSKEY,然后依照那个FHSKEY 在逻辑文件 PFFHSL3 中去定位,循环读取PFFHSL3 中,FHS01、FHS03 与FLD01、FLD02 相等的记 录。当读取记录终止,或键值不等时,退出循环*IN15 是EQ 指示器。假如将READE 操 作码换成READ 操作码的话因此,Factory 1

7、 处也就不能有值,就没有键值不等时退出 循环这一层意思,只是读不到记录时就退出循环,但有时我们使用逻辑文件,仅仅是需要 它的排序,而不需要读不到键值相等的记录就退出循环。因此说,使用READ 操作码,还 是READE 操作码,需要依照实际的要求来决定。以上的Factory 1 处填写值的系统处理,当READE 操作码在Factory 1 处未填写值时, 系统实际上是将当前的值与读到的上一条记录的关键字进行比较,而不是与SETLL 时的键 值做比较读第一条记录不做比较!,假如键值不等时,置EQ 指示器为1。也确实是说, 假如没有与FHSKEY 键值相同的录,那么系统并不是直截了当找开EQ 指示器

8、,而是会一直保 持正常地往下读,直到找到与读到的第一条记录关键字不同的记录,才会打开EQ 指示器, 因此要注意。READP (N | E) (Read Prior Record) 读取记录游标上移 简单来说,READ、READE 操作时,游标在数据文件中,是下移的;即读完第一条记 录,游标指向第二条记录;读完第二条记录,游标指向第三条记录,依此类推,直至最后一 条记录。但READP 那么正好相反,游标是上移的,即读完第三条记录后,游标指向第二条记 录;读完第二条记录后,游标指向第一条记录,直至读完第一条记录。一样来说,用READ、READE 的概率会比READP、READPE 的概率高得多,只

9、是在 某些情形下,使用READP 操作,又的确会专门省事,那个一时刻想不起例子来,大伙儿可在编 程序时多实践。READPE (N | E) (Read Prior Equal) 尽管我没用过,但猜想它应该确实是指游标上移,按键值去读取文件。与READP 的关系, 就类似于READE 与READ 的关系。REALLOC (E) (Re-allocate Storage) REL (E) (Release) RESET (E) (Reset) 将数据结构赋值成为初始值。注意是初始值,不是清空。如定义结构:D FHSDS DS D FHS01 10 INZABCD D FHS02 5 INZEFGH

10、 那么,不管对该结构如何赋值,当执行语句:C RESET FHSDS 之后,FHS01 将会变成ABCD,FHS02 将会变成EFGH,即复原成为初始值。RETURN (H | M | R) (Return to Caller) RETURN 是程序终止。在前面,简单的程序流程中,我们讲过,SETON LR 与RETURN 这两句话一 起,做为程序的终止。那个地点,再详细说明一下两者之间的区别,以及关系:假如不写RETURN,只写SETON LR,程序执行完最后一句之后,将会再从第一 句开始执行,造成死循环。在简单的程序流程那个例子中,程序原先只想修改读到的第一条 记录,而假如没有RETURN

11、 的话,将会把所有的记录都修改掉,直到最后找不到可修改的 记录,然后系统报错,专门中断。这种离奇的现象现在又测试不到了,可能是当时写错程 序了?把F 写成了P?不管它,当是我写错了,总之RETURN 是表示程序终止,没有 RETURN,主程序无可执行的语句时,它也会终止;假如RETURN 显现在主程序的中间, 那么RETURN 后面的语句将可不能执行 假如只写RETURN,不打开指示器*INLR,依照blogliou 所说 程序可不能强制将内存 中的数据写到磁盘中。400 缺省的是BLOCK 输出,即数据记录满一个BLOCK 块时才会将 这一组记录写到磁盘上。那么假如这时BLOCK 没满,数据

12、信息可不能赶忙写到磁盘上。之后 有其它作业用到该文件,读取的数据就不完整。 但假如文件有唯独键字,或记录日志,必须同步写时,事实上BLOCK 实际被忽略,也就 是现在可不能有错。目前我们用的是MIMIX 备份,客户实际上将所有的文件都列入日志,这 时不写也可不能显现上述错误。但为幸免一些潜在的问题,养成良好的编程风格,建议将 SETON LR 与RETURN 一同,做为程序终止的标志。因此,假如某个程序频繁被调用,且 不涉及文 操作时,可考虑不打开指示器*INLR,仅用RETURN 作为终止,如此程序不 会被PURGE 出内存,可提高调用效率。假如没写RETURN,也没有打开指示器*INLR,

13、在编译时,系统将会报40 级错,说找 不到程序终止的语句,因此大可放心。ROLBK (E) (Roll Back) 1. 差不多语法 Factory 1 Operation Factory 2 Result ROLBK 2. 该操作码无其它参数,确实是指对事务处理进行回滚操作。3. ILE 程序中,ROLBK 操作可随时进行,也承诺在没有声明COMMIT 类型的文件 的情形下,仍进行ROLBK 操作对该进程这前的事务进行确认处理f 4. 关于日志的确认回滚操作,在后面会另设专门章节讲述。2.8.4.5 S-Z SCAN (E) (Scan Character String) 扫描字符串 扫描字

14、符或字符串Factory 1 在目标字符串Factory 2 中是否存在 FLD01 SCAN FLD02 N 26 FLD01 能够是字符,也能够是字符变量;能够是一位长,也能够是多位长。当FLD01 在FLD02 中存在时,EQ 指示器打开,即*IN26=1,同时将FLD02 中的起始 位置,赋值给N;当FLD01 在FLD02 中不存在时,EQ 指示器保持关闭状态,即*IN26=0,同时N=0 承诺从FLD02 中的指定位置开始检查:FLD01 SCAN FLD02:2 N 26 如上句,即表示从FLD02 的第2 位,开始扫描。在实际使用中,比如说我们判定某个字符是否为数字,就能够先定

15、义一个09 的常量, 然后将要判定的字符去SCAN 一下那个常量 SELECT (Begin a Select Group) 分支语句 在操作码OTHER中讲过,为方便读者,列出简单语法如下:要注意,SELECT 操作码,必须有对应的ENDSL 操作码,否那么编译无法通过。SETGT (E) (Set Greater Than) 定位操作大于 举个例子吧,假设文件中有一个字段,是标识顺序号的,1、2、3、4。即该字段为1, 表示第一条记录,该字段为2,表示第2 条记录。那么:2 SETGT 文件记录格式名 READ 文件记录格式名 那个READ 操作,READ 到的,是第3 条记录。也确实是说

16、,SETGT 操作码,会将游标 定位到大于键值的第一条记录前。在实际使用中,假如我们是按逻辑文件读取,而且读了一条记录之后,对其键值相同的 记录都不需要再读取时,就能够用SETGT,只是需要注意,Factory 1 项,需要是与键值相 同的变量,即假如文件是使用多个字段做为键值,那么我们也需要先定义一个组合键值的变 量,然后Factory 1 处填写那个组合键值的变量名。当声明文件的键值有多项时,Factory 1 项的键值,承诺小于文件的键值,但顺序必须 一致。即声明的文件假如键值为:FHS01、FHS02、FHS03,那么我们在程序中定义三个类 型与之相同的变量FLD01、FLD02、FL

17、D03,以下写法差不多上有效的 FLDKEY KLIST KFLD FLD03 FLDKEY SETGT 文件记录格式名 FLD01 SETLL 文件记录格式名 SETLL (E) (Set Lower Limit) 定位操作小于 语法与SETGT 相同,含义与SETGT 不同。SETLL 操作码,会将游标定位到与键值相 等的第一条记录之前,仍是上例,假如是 2 SETLL 文件记录格式名 那么READ 操作码读到的记录,确实是第2 条记录,看到了吧,和SETGT 不同。SETLL 操作码还能够用来简单判定当前键值是否存在有记录,以PFFHSL3 为例键值 为FHS01、FHS02 EVAL

18、FLD01=01 EVAL FLD02=02 FHSKEY SETLL 文件记录格式名 44 当文件中有相应记录时,EQ 指示器打开,即*IN44=1 当文件中无相应记录时,EQ 指示器关闭,即*IN44=0与CHAIN 正好相反,要注意 而在这种用法中,SETLL 与CHAIN 的区别在于,CHAIN 是定位读取了记录,而SETLL 仅仅只是判定该记录是否存在。因此用SETLL 操作,不能修改记录,也无法取出记录的值。只能判定记录是否存在。假如要修改记录,或取出记录的值,还需要有一个读取定位的操作, 如READ,或READE、READP 等最常用的,应该确实是READ 操作 SETOFF (

19、Set Indicator Off) 关闭指示器 SETOFF 10 11 12 EVAL *IN10=0 EVAL *IN11=0 EVAL *IN12=0 在SETOFF 那个操作码中,指示器填在HI、LO、EQ 哪里都没关系,差不多上表示要被关 闭的指示器 SETON (Set Indicator On) 打开指示器 EVAL *IN10=1 EVAL *IN11=1 EVAL *IN12=1 在SETON 那个操作码中,指示器填在HI、LO、EQ 哪里都没关系,差不多上表示要被关闭 的指示器 SHTDN (Shut Down) SORTA (Sort an Array) SQRT (H

20、) (Square Root) 开方 9 SQRT 3 N 这时,N=3因为3 的平方为9 9、3 都能够是数字型变量,或者直截了当是数字 SUB (H) (Subtract) 减法操作 FLD01 SUB FLD02 FLD03 SUB FLD02 FLD03 看过前面的ADD、MULT 操作码,那个地点不用说明也应该明白是什么意思了吧。那就不 多说了。SUBDUR (E) (Subtract Duration) 日期相减 1. 减日期 FLD01 SUBDUR N:*Y FLD02 表示将日期型变量FLD01 减去N 年,赋值到日期型变量FLD02 中;N 能够是一个数字型变量,也能够确实

21、是一个数字,N 承诺为负数 *Y,*M,*D还有其它的参数值,可见ADDDUR,其中有详细说明 2. 判定两个日期型变量之间的天/月/年数 FLD01 SUBDUR FLD02 N:*D 这时,N 做为一结果变量,表示日期型变量FLD01 与FLD02 之间的天数 SUBST (P | E) (Substring) 取字符/字符串 2 SUBST FLD01:3 FLD02 表示从字段FLD01 的第3 位开始,取2 位,左对齐赋值到字段FLD02 中。要求字段FLD01 的长度必须大于或等于3+2 位,否那么程序会报错。能够尝试用%SUBST 语句,也是等价的,如下 EVAL FLD02=%

22、SUBST(FLD01:3:2) 表示的是同样的意思。起始位数3,取的长度2,在两种写法之下,都能够使用数字型变量来表达。相比较之下,%SUBST 还有一种用法,确实是对字符的指定位置赋值,那个就厉害了:EVAL %SUBST(FLD02:2)=01 看到了吧,这句话确实是说,使字段FLD02 的第3、4 位即从第三位开始,两位长等 于01 TAG (Tag) 定义标签,与GOTO 同用 FHSTAG TAG TEST (D | T | Z | E) (Test Date/Time/Timestamp) TESTB (Test Bit) TESTN (Test Numeric) TESTZ (

23、Test Zone) TIME (Time of Day) -取当前系统时刻 TIME FLD01 FLD01 能够是时刻型或数字型变量 UNLOCK (E) (Unlock a Data Area or Release a Record) 解锁 UNLOCK 文件记录格式名 UNLOCK 是解锁操作,在某种程度上,能够将UNLOCK 视为ROLBK,将UPDATE 视为COMMIT。即假如锁定某条记录,并对其字段进行赋值之后,使用UPDATE 语句,将 会把修改后的结果储存下来,即修改文件,而UNLOCK 语句那么可不能修改文件,即否认了之 前对文件字段做的赋值修改。从程序的执行效率上来讲,

24、UNLOCK 的执行效率是高于UPDATE 的,因为UPDATE 操作时,系统需要对文件的每一个字段进行确认处理(DEBUG 时能够看到),而UNLOCK 就 是简单的解锁而已。UPDATE (Modify Existing Record) 修改记录 语法与UNLOCK 一样。那个地点需要说明一下,在执行UPDATE 的时候,必须先使用READ、CHAIN 等操作码锁 定一条记录。假如未锁住记录,UPDATE 操作码将会报错。当执行了UNLOCK、UPDATE、 以及ROLBK 语句时,等因此解锁,现在再执行UPDATE 操作码之前,必须再次锁住记录 操作;WHEN (M | R) (When) 分支判定语句中的条件判定 在操作码OTHER,SELECT中都讲过,仍列出简单语法如下:Factory 1 Op

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

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