AS400开发入门-By adan(3)

2019-04-16 19:17

其他还有CASXX、GOTO、EXSR(执行子程序)转移操作

3.重复执行某一操作/循环 A.DO ENDDO OPM RPG DO 10 Y 2 0 。。。 ENDDO ILE RPG DO *HIVAL IF Y>10 LEAVE ENDIF 。。。 EVAL Y = Y+1 ENDDO B.DOW ENDDO OPM RPG Y DOWLE 10 。。。 1 ADD Y Y ENDDO

其他还有DOUXX/DOU重复执行操作

ILE RPG DOW Y<=10 。。。 EVAL Y = Y+1 ENDDO 操作码

1.算术运算

ADD: RESULT = FACTOR1/RESULT + FACTOR2 SUB: RESULT = FACTOR1/RESULT + FACTOR2 Z-ADD: RESULT = 0 + FACTOR2 Z-SUB: RESULT = 0 - FACTOR2

MULT: RESULT = FACTOR1/RESULT * FACTOR2 DIV: RESULT = FACTOR1/RESULT / FACTOR2 MVR: RESULT = 上一个DIV操作的余数 SQRT: RESULT = FACTOR2的平方根 XFOOT: RESULT = FACTOR2数组的和

61676237.doc – 第 11 页 共 39 页

2.赋值操作

MOVE:RESULT = FACTOR2(右靠齐,字符型变量和P形变量可以互相赋值) 如果FACTOR2的长度小于RESULT的长度,则RESULT的其余部分保持不便; 如果FACTOR2的长度大于RESULT的长度,则FACTOR2种的多余部分将被忽略; MOVEL: RESULT = FACTOR2(左靠齐,字符型变量和P形变量可以互相赋值) 如果FACTOR2的长度小于RESULT的长度,则RESULT的其余部分保持不便; 如果FACTOR2的长度大于RESULT的长度,则FACTOR2种的多余部分将被忽略; MOVEA: RESULT = FACTOR2 (RESULT必须是个使用DIM定义的数组,FACTOR2可以是数

组,变量,常量,*BLANKS, *ZEROS, *ALL'XXX'。详细图解清参考RPG FOR AS/400 REFERENCE)

3. 比较操作:

COMP: FACTOR1与FACTOR2比较的结果由指示器表示 VAR1 COMP VAR2 99 *IN99 IFEQ ’1’

。。。 ENDIF

CABXX: FACTOR1与FACTOR2比较,如果结果为真的话就转移到RESULT指示的TAG VAR1 CABXX VAR2 TAG1 VAR1 CABXX VAR3 TAG2 ??.. TAG1 TAG ??.. TAG2 TAG ??.

CASXX: FACTOR1与FACTOR2比较,如果结果为真的话就执行RESULT指示的子程序

VAR1 CASXX VAR2/CONST SUBROUTINE1 VAR3 CASXX VAR4/CONST SUBROUTINE2 VAR5 CASXX VAR6/CONST SUBROUTINE3 CAS SUBROUTINE4 ENDCS

例:

DA1 S 2 0 INZ(50) DA2 S 2 0 INZ(20) C A1 DSPLY C A2 DSPLY C A1 CASGT A2 S#001 C A1 CASLT A2 S#002 C ENDCS C ENDPGM TAG

61676237.doc – 第 12 页 共 39 页

C EVAL *INLR = '1' C RETURN C S#001 BEGSR C 'A1>A2' DSPLY C GOTO ENDPGM C ENDSR C S#002 BEGSR

4.程序操作:

BEGSR: 子程序开始 ENDSR: 子程序结束 EXSR: 执行子程序 例:

SUB0001 BEGSR

EXSR SUB0001

???. ENDSR

注释:每一个程序中都可以有一个特殊的子程序*INZR,它无论被放在程序的什么部分都会被首先执行

*INZR BEGSR ??? ENDSR

程序例外出错检测子程序,当程序发现例外出错时,自动执行该子程序,做出下一步处理

*PSSR BEGSR 。。。 ENDSR

DABC S 3 0 DIM(10) DX S 2 0 C C MOVEA 1 ABC(X) C ABC(1) DSPLY C C ENDPGM TAG C EVAL *INLR = '1' C RETURN C C *PSSR BEGSR C 'SYS ERR' DSPLY C GOTO ENDPGM C ENDSR

61676237.doc – 第 13 页 共 39 页

5. 调用和转移操作:

CALL: 调用一个外部程序,该程序可以是RPG、CL或C程序等 CALL 'COUNT' PARM P1 PARM P2 RETRN/RETURN: 返回上一层程序,

6. 文件操作:

A. CHAIN: 用纪录号或键值从一个文件查找,如果文件是使用I方式打开的话,此操作不会在记录上加锁;如果使用U方式打开的话,就会。 MOVE ‘ABCD’ WWACNO

N1N2N3 WWACNO CHAIN FACNO(记录格式名) 8899 *IN88 IFEQ ‘1’

(RPG IV)或 IF *IN88 = ‘1’ (RPG IV)或 IF *IN88

(RPG IV)或 IF NOT %FOUND

MOVE ‘FER0001’ WWMGID GOTO ENDPGM ENDIF

*IN99 IFEQ '1' 纪录被锁 MOVE 'FER0002' WWMGID GOTO ENDPGM ENDIF ?? ENDPGM TAG

MOVE '1' *INLR RETRN

ACKEY KLIST

KFLD WWACNO KFLD WWSBNO MOVE ‘ABC’ WWACNO Z-ADD 10 WWSBNO

ACKEY CHAIN(N) FACNO(记录格式名) 8899 仅查找,不锁记录 *IN88 IFEQ '1'

MOVE 'FER0001' WWMGID GOTO ENDPGM ENDIF

*IN99 IFEQ '1'

MOVE 'FER0002' WWMGID

61676237.doc – 第 14 页 共 39 页

GOTO ENDPGM ENDIF ??.. ENDPGM TAG

MOVE '1' *INLR RETRN

B. CLOSE: 关闭文件(通常情况下,如果是注明用户打开的文件,在程序结束之前要CLOSE将文件关闭,如果是系统自动打开的文件,在程序结束时会自动关闭) CLOSE ACNOA(文件名)

C. OPEN: 打开文件,在程序对多成员文件进行操作时一般需要由用户自行打开和关闭数据文件

OPEN ACNOA(文件名)

D. COMIT/COMMIT: 文件修改落实,在文件定义(F表)中指明文件要由落实机制控制(COMMIT参数)

E. ROLBK/ROLBK : 文件修改回滚,在文件定义(F表)中指明文件要由落实机制控制(COMMIT参数)

F. DELET/DELETE: 删除记录

DELET FACNO(记录格式名)

G. EXFMT: 显示输出一个显示记录,并从标准输入读取数据 EXFMT CHOICE(一般文件显示记录格式名)

H. READ: 读一条记录

N1N2N3 READ FACNO(记录格式名) 99 *IN99 IFEQ '1'

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

MOVE 'FRD0001' WWMGID GOTO ENDPGM ENDIF

I. READE: 从当前记录位置开始寻找一个等于键字的记录,并读取 MOVE ‘A124’ WWACNO

N2N3

WWACNO READE FACNO 8899

*IN88 IFEQ '1' 纪录被锁

MOVE 'FER0002' WWMGID GOTO ENDPGM ENDIF

*IN99 IFEQ '1' 无匹配记录

(RPG IV)或 IF *IN99 = ‘1’ (RPG IV)或 IF *IN99

(RPG IV)或 IF NOT %FOUND

MOVE 'FER0003' WWMGID GOTO ENDPGM

61676237.doc – 第 15 页 共 39 页


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

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

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

马上注册会员

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