RPG AS400程序员培训手册_第1页
RPG AS400程序员培训手册_第2页
RPG AS400程序员培训手册_第3页
RPG AS400程序员培训手册_第4页
RPG AS400程序员培训手册_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

OPEN后面的目标,必须是在当前程序中已声明的文件名(不是文件的记录格式名),而且在OPEN操作之后,在程序结束之前之前,必须有对应的CLOSE操作。使用OPEN操作,文件在声明时,必须使用USROPN关键字(详见IFFLD01>FLD03ORFLD0而且可以用来表达一些复杂的逻辑关系。有鉴于此,所以通常IF语句中,我会以总觉得这种写法的逻辑关系看起来不直接,尤其是有很复杂的AND,OR时。OTHER(OtherwiseSelect)分WHEN条件判断1行处理语句3(即当程序当前不满足以上所以条件判断时,则执行OTHER之后的语句。处理语句允许有很多句;条件判断可以写得很复杂,也允许对不同的字段进写做:即WHEN与ELSEIF是类似的,这样说,应该可以明白了吧。总之,SELECT—ENDSL是一个很好用的语法,尤其是在表示很多不同的分支处理时。没用过,讲数据域的。PARM(IdentifyParameters)定义关于具体内容讲解,详见前面所说“入口参数”一章。法,不过我不知道它具体表示什么意思,也不知道该怎么用。请用过的来补充。PLIST(IdentifyaPREAD后面跟的,必须是声明的文件记录格式名;),需要读取的记录仍被锁,将会打开LO指EQ指示器为是否读到指示器。当未读到任何记录时,打开EQ指示器,即*IN46=’1’2.当文件在程序中,是用只读的方式声明时,READ操作并不会造成锁表;如果文件在程序中是用修改的方式声明,READ操作成功后,),),即这样读文件,就不会锁记录,但是同时也不能修改记录。如果需要修改在修改之前(包括对文件字段赋值之前),还必须再对该记录进行一次定位操作(比如3.当执行READ操作时,程序是一条记录。关于游标是如何指向,还不是一个很简单的问题,所以将会在据库相关知识”中具体讲解。语法与READ操作码大致一样,这里不再IF*IN15=’1’录。当读取记录结束,或键值不等时,退出循环作码换成READ操作码的话(当然,Factory1处也就循环”这一层意思,只是读不到记录时就退出循环,但有时我们使用逻辑文件,它的排序,而不需要读不到键值相等的记录就退出循是READE操作码,需要根据实际的要求来决定。以上的Factory1处填写值的系统处理,当READE操作码在系统实际上是将当前的值与读到的上一条记录!),如果没有与FHSKEY键值相同的录,那么系持正常地往下读,直到找到与读到的第一条记录关键字不同的记录,才会打开EQ指示器,所以要注意。录,游标指向第二条记录;读完第二条记录,游标指向第三条记录,依条记录。但READP则正好相反,游标是上移录;读完第二条记录后,游标指向第一条记录,直至读完第一条记录。某些情况下,使用READP操作,又的确会很程序时多实践。虽然我没用过,但猜想它应该就是指游标上移,按键值去读取文件。与READP就类似于READE与READ的关系。将数据结构赋值成为初始值。注意是初始值,不是清空。如定义结构:那么,不管对该结构如何赋值,当执行语句:RETURN是程序结束。起,做为程序的结束。这里,再详细解释一下两者之间的区别,以及关系:句开始执行,造成死循环。在简单的程序流程这个例子中,程序原来只记录,而如果没有RETURN的话,记录,然后系统报错,异常中断。(这种离奇的现象现在又测这一组记录写到磁盘上。那么如果这时BLOCK没满,数据信息有其它作业用到该文件,读取的数据就不完整。”但如果文件有唯一键字,或记录日志,必须同步写时,其实BLOCK实际被忽略,是此时不会有错。目前我们用的是MIMIX备份,客户时不写也不会出现上述错误。但为避免一些潜在的SETONLR与RETURN一会被PURGE出内存,可提高调用效率。不到程序结束的语句,所以大可放心。2.该操作码无其它参数,就是指对事务处理进行回滚操作。3.ILE程序中,ROLBK操作可随时进行,的情况下,仍进行ROLBK操作(对该进程这前的事务进行确认处理)f4.关于日志的确认回滚操作,在后面会另设专门章节讲述。FLD01SCANFLD02NFLD01可以是字符,也可以是字符变量;可以是一位长,也可以是多位长。位置,赋值给N;FLD01SCANFLD02:2N如上句,即表示从FLD02的第2位,在实际使用中,比如说我们判断某个字符是否为数字,就可以先定义一个0—9的常量,在操作码“OTHER”中讲过,为方便读者,列出简单语法如下:要注意,SELECT操作码,必须有对应的ENDSL操作码,否则编译无法通过。这个READ操作,READ到的,是第定位到大于键值的第一条记录前。在实际使用中,如果我们是按逻辑文件读取,而且读了一条记录之后,对其键值相同的同的变量,即如果文件是使用多个字段做为键值,那么我们也需要先定义一个组量,然后Factory1处填写这个组合键值的变量名。当声明文件的键值有多项时,Factory1那么READ操作码读到的记录,就是第2条记录,看到了吧,SETLL操作码还可以用来简单判断EVALFLD01=’01’EVALFLD02=’02’当文件中有相应记录时,EQ指示器打开,即*IN44=’1’而在这种用法中,SETLL与CHAIN的区仅仅只是判断该记录是否存在。所以用SETLL操作,不能修改记录,也无法取出记录的值。只能判断记录是否存在。如果要修改记录,或取出记录的值,还需要有一个读取定位的操作,SETOFF(SetIndicatEVAL*IN10=’0’EVAL*IN11=’0’EVAL*IN12=’0’EVAL*IN10=’1’EVAL*IN11=’1’EVAL*IN12=’1’多说了。FLD01SUBDURN:*Y表示将日期型变量FLD01减去N年,赋值到日期型变量N可以是一个数字型变量,也可以就是一个数字,N允许为负数FLD01SUBDURFLD02表示从字段FLD01的第3位开始,取要求字段FLD01的长度必须大于或等于3+2位,否则程EVALFLD02=%SUBST(FLD表示的是同样的意思。相比较之下,%SUBST还有一种用法,就是对字符的指定位置赋值,这个就厉害了:EVAL%SUBST(FLD02:3:2)=’01’于“01”TIME(TimeofDay)--取当前系统时间UNLOCK{(E)}(Unlock会把修改后的结果保存下来,即修改文件,而UNLOCK前对文件字段做的赋值修改。从程序的执行效率上来讲,UNLOCK的是简单的解锁而已。UPDATE(ModifyExistingRecord)修语法与UNLOCK一样。以及ROLBK语句时,等于是解锁,此操作;WHEN条件判断1使用WHENxx这个操作码。WRITE(CreateNewRecords)常用的方式:表示在文件中写入一条新记录。文件需要声明为可写的。通常会在给文件字段赋值之前,作一次CLEAR的麻烦。没用过,看帮助,是表示对数组字段的累加统计。假设DIMDATA定义为一个数字型的数组变量,FHS01就表示将数组DIMDATA中的所有记录的值都将一个字符串中指定的字符,更换成另外的字符。CMOVEL'ABCAAAC123C'A':'9'XLATEMYCHAR有的“A”都变成了“9”;XLATE也可能指定起始位置。如上句更改为:),赋值。端,只能在数字型变量之间赋值。所以也没有什么可说的了。EVALFLD01=*ALL’0’表示将字符型变量FLD01赋值为全’0’而%LEN取字符串的长度,举例:EVALMYLEN=%LEN这句话的意思,是指取字符串FLD01的长度,不用%LEN操作码,取到的是字符串的总长度,不是有效所以,%LEN通常会与%TRIM或是%TRIMR一起使用,语法在下面介绍。都是去字符串变量中的空字符意思,%TRIM是去字符串左边的空字符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论