DDS
FMT DP .....AAN01N02N03T.Name++++++RLen++TDpBLinPosFunctions+++++++++
*************** Beginning of data ****************************
0001.00 A DSPSIZ(24 80 *DS3)
0002.00 *
0003.00 A R R1A SFL
0004.00 A NN2 5S 0 2 21
0005.00 *
0006.00 A R R1B SFLCTL(R1A)
0007.00 A SFLSIZ(007)
0008.00 A SFLPAG(006)
0009.00 A SFLDSP
0010.00 A SFLDSPCTL
0011.00 A OVERLAY
0012.00 A 20 21'HELLO'
****************** End of data *******************************
红色部分可以作为数组元素定义,这里假定动态数组是用来存放5S 0数据的.
(Subfile定义要娴熟啊,关键字什么的...)
RPG
FMT * *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
*************** Beginning of data *******************
0001.00 *
0002.00 FSUBF01 CF E WORKSTN SFILE(R1A:@RRN)
0003.00 *
0004.00 DN1 S 5S 0
0005.00 D@RRN S 4S 0 INZ(0)
0006.00 D@RN1 S 4S 0 INZ(0)
0007.00 *subfile初始化大小是7,这个给Subfile存入10个值
0008.00 C EVAL N1=0
0009.00 C 1 DO 10
0010.00 C EVAL N1=N1+10
0011.00 C EVAL @RRN = @RRN +1
0012.00 C EVAL NN2=N1
0013.00 C WRITE R1A
0014.00 C ENDDO
0015.00 C*不用显示界面,使用CHAIN从Subfile中读取数据,READ不能读取Subfile
0016.00 C EVAL @RN1=@RN1+1
0017.00 C @RN1 CHAIN R1A
0018.00 C NN2 DSPLY
0019.00 C EVAL *INLR=*ON
0020.00 C RETURN
****************** End of data *****************
要点:
1. 系统自动Subfile定义的有Key,也就是其RRN,因此可以使用CHAIN操作
2. READ不能读取Subfile
3. 可以在上面RPG的CHAIN位置加上循环,这样可以遍历整个Subfile
后记,唉,还是练习的少了,随便写这么个小小的Subfile时竟然错了好几次...
第一次是忘了用SFILE关键字
第二次是忘了@RRN=@RRN+1
编译都没错,一执行就错误了,以后一定要注意了.
Subfile使用总结:
1. 定义DDS时要注意各个关键字,不能少了
2. RPG D表定义时不要忘了SFILE和@RRN 4S 0定义!!!!
3. RPG C表中要先Load数据,然后才能EXFMT.
阅读(1585) | 评论(0) | 转发(0) |