Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1065818
  • 博文数量: 106
  • 博客积分: 9093
  • 博客等级: 中将
  • 技术积分: 2770
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-01 17:22
文章分类

全部博文(106)

文章存档

2014年(1)

2012年(29)

2011年(32)

2010年(20)

2008年(24)

分类:

2011-01-05 21:21:04

下面用一个简单的例子来说明一下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程序一般多见于打印程序。里面有简单的合计累加等操作。
阅读(2976) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~