AS400开发入门-By adan(4)

2019-04-16 19:17

N2N3 8899 纪录被锁

MOVE 'FER0002' WWMGID GOTO ENDPGM ENDIF

*IN99 IFEQ '1' 遇到文件头

(RPG IV)或 IF %BOF(到文件末)

MOVE 'FER0003' WWMGID GOTO ENDPGM ENDIF

K. SETLL: 从文件第一条记录开始逐条查询,直到找到第一条符合条件的记录,此记录的键字大于或等于FACTOR1指定的键值。但只是将文件指针指向此记录的上方,并不读出(可以使用READ读下一记录)。

L. SETGL: 从文件第一条记录开始逐条查询,直到找到第一条符合条件的记录,此记录的键字大于FACTOR1指定的键值。但只是将文件指针指向此记录的下方,并不读出(可以使用READP将上一条记录读出)。 例如:

有一物理文件:学生成绩表,记录格式名为RSTT,字段属性是,成绩GRADE(3S0)、姓名NAME(10 O),成绩是键值,储存数据如下:

成绩(K) 姓名 80 张一 85 张二 88 张三 88 李一 92 李二

显示将成绩大等于90的学生姓名(结果只有显示李二)

MOVE 90 CJ 3 0

CJ SETLL RSTT(记录格式名) READ RSTT DO 1 IF %EOF LEAVE ENDIF GRADE DSPLY

READ RSTT ENDDO

显示将成绩小等于85的学生姓名(结果显示张二和张一) MOVE 85 CJ 3 0

CJ SETGT RSTT(记录格式名)

61676237.doc – 第 16 页 共 39 页

J. READP: *IN88 ENDIF

读取当前记录位置的上一条记录 READP FACNO IFEQ '1'

GRADE READ DO IF LEAVE ENDIF DSPLY READP ENDDO

P RSTT 1 %BOF

RSTT

注意:SETLL与SETGT只是对文件记录进行定位,并没有读记录,必须结合使用READ或READP等读记录语句一起使用,使用的文件必须带键值

M. UNLCK: 解除记录锁

UNLCK FIDNO(记录格式名)

N. UPDATE: 更新数据库记录

EVAL ACKEY = 10

ACKEY CHAIN FACNO

EVAL ACNM ='Leon Davis'

UPDATE FACNO(记录格式名) 99(N2) *IN99 IFEQ '1' 更新文件失败 (RPG IV)或 IF %ERROR

EVAL 'UDR0001' WWMGID GOTO ENGPGM ENDIF

O. WRITE: 写文件记录 EVAL

WRITE FACNO(记录格式名) 99(N2)

*IN99 IFEQ '1' 写文件失败 (RPG IV)或 IF %ERROR

EVAL 'WTR0001' WWMGID GOTO ENGPGM ENDIF

注意:在RPG中使用文件操作一定要注意控制好文件定位操作和锁表问题,不要在一个程序链中同时打开某一个表进行修改。

7.信息操作:

1. DEBUG: 用来在有问题的程序中显示所有状态为'1'的指示器 2. DUMP: 在调试程序的时候,可以将程序运行到当前位置时所有变量和指示器的值打印在一个spool file 中。

3. TIME: 取系统时间

TIME TM_VAR(6或12位数字的数字型字段名)

4. DSPLY: 允许程序与系统控制台之间或和程序要求的显示工作站之间进行通讯。 VAR1 DSPLY

61676237.doc – 第 17 页 共 39 页

VAR1 DSPLY *QSYSOPR RESP_VAR VAR1 DSPLY RESP_VAR

注释:如果是个批作业那么因子2的默认值是QSYSOPR(系统操作员),如果是个交互式作业,那么作业2的默认值是*EXT(信息发往请求者)

8.说明操作:

1. DEFN/DEFINE:数据区(data area):在因子2说明一个数据区的外部名或*LDA说明为一个局部数据区,如果在因子2为空,则结果字段上登记的是该数据区的外部名

*LIKE DEFN WWACNO XXACNO(字段名) *NAMVAR DEFN TOTAL TATNET(可以是字段名、数据结构名、 数据结构子字段等)

*NAMVAR DEFN TOTAL(外部定义数据区)

2. KLIST & KFLD: 定义复合键字,用于复合键字逻辑文件。 ACKEY KLIST

KFLD ACNO KFLD ACSN

3. PLIST :表示一个参数列表,如果参数列表是一个被调用的输入参数列表,因子1必须是*ENTRY

PARM : 定义组成一个参数列表的参数,可以随在一个PLIST和CALL之后 WWPARM PLIST

PARM ACNO PARM ACSN CALL PGMA

PARM P1 PARM P2

9.数据区操作

1.IN :检索一个数据区并可选择允许你指定是否允许其它的程序更新这个数据区,IN检索的数据区,必须在*NAMVAR DEFN 语句的结果字段上说明。

当因子1是保留字*LOCK时,该数据区已上锁,直到执行一个UNCLK操作或执行因子1上为空的OUT操作或程序结束情况之一方可解琐。

当因子2是保留字*NAMVAR时,检索程序中定义的所有数据区,当遇到错误时,如结果指示器未指定,可以说明异常情况/程序例外错监控子程序(*PSSR)来处理。

2.OUT :更新一个数据区更新之前,必须先做两件事,其一,该数据区必须在一个*NAMVAR DEFN语句的结果字段上说明,其二,该数据区必须用一个*LOCK IN语句预先上锁。它的因子1是*LOCK时,更新之后保留上锁状态,因子1是空时,更新之后不上锁。当因子2是局部数据区时,因子1必须是空。当因子2为保留字*NAMVAR时,程序中定义的所有数据区都被更新,更新发生错误时,处理方式同IN操作。

C *DTAARA DEFINE SSCDTAARA DTAARA 5 C *LOCK IN DTAARA

61676237.doc – 第 18 页 共 39 页

C DTAARA DSPLY C EVAL DTAARA = %SUBST(DTAARA:1:3) C DTAARA DSPLY C

C OUT DTAARA

3.UNLCK/UNLOCK:解锁一个数据区,一个数据区可以和UNLCK操作联用之前,它必须在一个*NAMVAR DEFN语句的结果字段上说明,因子2必须是一个数据区名或保留字*NAMVAR,当因子2是NAMVAR时,程序中所有上锁的数据区都被解锁。 UNLOCK DTAARA1 UNLOCK *NAMVAR

10.其它操作:

1.LOKUP/LOOKUP:

SRCHNO LOOKUP ARR 11( = EQ) 在数组ARR中查找等于SRCHNO的元素,找到时结果指示器为ON 2.XFOOT: 求一个数组中所有元素的和 XFOOT ARR SUM 3.SORTA: 给一个数注重的元素排序 SORTA ARR 4.MOVEA: 数组传递

MOVEA *BLANKS ARR(X)(从第X元素开始,ARR的其余部分是空格) MOVEA *ALL'XY' ARR(X)(从第X元素开始,ARR的其余部分给‘XY’)

MOVEA ARRX ARRY(3)(自数组ARRX第一元素起传递给数组ARRY的自第3个元素起的元素)

MOVEA ARRX ARRY

MOVEA ARRX(3) ARRY(自数组ARRX第3元素起传递给数组ARRY的自第1个元素起的元素)

MOVEA FLDA ARR

FLDA ARR

1234567 传送前 |986|543|210|ABC| 1234567 传送后 |123|456|710|ABC|

MOVEA ARR FLDA

ARR FLDA |01|0A|02|0B|O3|0C| 传送前 01OA |01|0A|02|0B|O3|0C| 传送后 02OB

61676237.doc – 第 19 页 共 39 页

ILE RPG对RPG/400的扩充

1.ILE RPG基本概念 过程(PROCEDURE)

是一组字包含的高级语言语句的集合,它执行特定的任务然后返回调用者。MODULE中的PROCEDURE已经可以被其他任何ILE程序共享,当然,作为ILE语言之一,ILE RPG也可以调用任何ILE子程序(包括ILE RPG本身)。

模块对象(MODULE)

是不可运行的对象,在系统中使用符号为*MODULE来代表模块对象。它是建立可运行ILE对象的基本构件块。我们也可以使用CRTRPGMOD命令将一个程序编译成MODULE。

我们还可以将一个或者多个MODULE共同编译成一个服务程序,供其它应用系统调用。当然,我们可以使用其它第三方厂商提供的服务程序,或者将我们自己的程序编译成一个服务程序作为第三方产品提供给客户。这种服务程序实际上就是一个函数库。在AS/400中,系统API也都是通过这种方式提供的。

PROCEDURE和MODULE都是ILE和OPM之间的显著区别。

ILE程序

可运行的对象,在系统中使用符号为*PGM来代表ILE程序对象(和OPM RPG一样)。

编译RPGLE程序有两种方式: 1.对于单独一个RPGLE程序,我们可以使用命令CRTBNDRPG(与在PDM中使用14同)将一个单独的程序变成一个可执行程序。这个命令实际上实现将RPGLE程序编译成一个临时的MODULE然后再将它编译成一个可执行程序。 2.我们也可以先使用CRTRPGMOD命令将一个程序编译成MODULE,然后再使用CRTPGM将这个MODULE和其他MODULE一起编译成一个可执行程序。使用这种方法的好处就是可以利用其它MODULE中的子程序。当然这个程序自己的子程序也可以被其他的ILE程序共享。

服务程序

是一个由可运行的过程和可用数据项组成的集合。其他的ILE程序和服务程序可以直接地存取这些过程和数据项。在许多方面,服务程序类似于子程序库或过程库。

61676237.doc – 第 20 页 共 39 页


AS400开发入门-By adan(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:如何提升谈判能力?

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

马上注册会员

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