下面用一个简单的例子来说明一下RPG CYCLE程序。
1.创建一个pf。DDS如下:
A R DIHAZ1
A HZCASE 6A TEXT('PARENT CASE')
A HZCNTR 8A TEXT('CONTAINER')
A HZDCNO 6A TEXT('DOCUMENT NUMBER')
A HZPLOM 3A TEXT('PLANT OF Manufacturing')
A HZTYPZ 1A TEXT('ORDER TYPE')
A HZQNTY 6P 0 TEXT('CONTAINER QUANTITY')
A HZIND 1A TEXT('HAZMAT INDICATOR')
A HZVRFD Z TEXT('VERIFIED TIMESTAMP')
A HZTMSP Z TEXT('UPDATE TIMESTAMP')
A*
A K HZCASE
A K HZCNTR
A K HZDCNO
编译pf
CRTPF FILE(PTRLIB/HAZ10) SRCFILE(PTRLIB/QDDSSRC)
2.创建一个sql源文件。如下:
DELETE FROM PTRLIB/HAZ10;
INSERT INTO PTRLIB/HAZ10 VALUES('709991', '2100GHH2', '002094',
'9K2', '6', 4, 'Y', CURRENT TIMESTAMP,CURRENT TIMESTAMP);
INSERT INTO PTRLIB/HAZ10 VALUES('709991', '2100GHH2', '002095',
'9K2', '6', 10, 'Y', CURRENT TIMESTAMP,CURRENT TIMESTAMP);
INSERT INTO PTRLIB/HAZ10 VALUES('709991', '2100GHH3', '002094',
'9K2', '6', 6, 'Y', CURRENT TIMESTAMP,CURRENT TIMESTAMP);
INSERT INTO PTRLIB/HAZ10 VALUES('709991', '2100GHH3', '002095',
'9K2', '6', 14, 'Y', CURRENT TIMESTAMP,CURRENT TIMESTAMP);
添加数据:
RUNSQLSTM SRCFILE(PTRLIB/QSQLSRC) SRCMBR(INZHAZ10) COMMIT(*NONE)
3.创建RPG CYCLE程序。程序如下:
FHAZ10 IP E K DISK
IDIHAZ1 01
I HZDCNOL1
I HZCNTRL2
I HZCASEL3
C*
C L1 'L1' DSPLY
C L1 HZCASE DSPLY
C L1 HZCNTR DSPLY
C L1 HZDCNO DSPLY
C L2 'L2' DSPLY
C L2 HZCASE DSPLY
C L2 HZCNTR DSPLY
C L2 HZDCNO DSPLY
C L3 'L3' DSPLY
C L3 HZCASE DSPLY
C L3 HZCNTR DSPLY
C L3 HZDCNO DSPLY
当程序运行时,如果读到第一条数据,L1、L2和L3这三个指示器都会被设置成*on。当读到第二条数据的时候因为HZCNTR和HZCASE没有变化,所以L2和L3被设置成*off,只有L1是*on的。当读到第三条数据的时候因为HZCNTR发生了变化,所以L1和L2被设置成*on,而只有L3是*off的。
大家应该注意到了,PF的key和程序中的L1,L2,L3正好相反。那是因为在程序中声明的key顺序一定是最先变化的在最上面。
RPG CYCLE程序一般多见于打印程序。里面有简单的合计累加等操作。
阅读(3035) | 评论(0) | 转发(1) |