DDS
FMT A* .....A*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
*************** Beginning of data **********************************************
0001.00 *
0002.00 A DSPSIZ(24 80 *DS3)
0003.00 A CF03(03)
0004.00 *
0005.00 A R RCD01A SFL
0006.00 A FLD01NO R 7 4REFFLD(RCUST/CUSNO *LIBL/CUSTOMER)
0007.00 A COLOR(PNK)
0008.00 A FLD01NM R 7 13REFFLD(RCUST/CUSNM *LIBL/CUSTOMER)
0009.00 A COLOR(PNK)
0010.00 *
0011.00 A R RCD01B SFLCTL(RCD01A)
0012.00 A SFLPAG(0003)
0013.00 A SFLSIZ(0020)
0014.00 A SFLDSP
0015.00 A SFLDSPCTL
0016.00 A OVERLAY
0017.00 A 2 10DATE
0018.00 A COLOR(WHT)
0019.00 A 3 10TIME
0020.00 A COLOR(WHT)
0021.00 A 6 4'CUSNO'
0022.00 A COLOR(YLW)
0023.00 A 6 13'CUSNM'
0024.00 A COLOR(YLW)
0025.00 *
0026.00 A R TRAILER
0027.00 A 22 4'F3=EXIT'
0028.00 A COLOR(BLU)
0029.00 A 24 4'NOTES:'
0030.00 A COLOR(RED)
0031.00 A NOTES 20A O 24 12
0032.00 A COLOR(WHT)
****************** End of data *************************************************
RPG IV
FMT * *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
*************** Beginning of data *****************************************
0001.00 *
0002.00 FCUSTOMER IF E DISK
0003.00 FDSPF09 CF E WORKSTN SFILE(RCD01A:@RRN)
0004.00 *
0005.00 D@RRN S 4S 0 INZ(0)
0006.00 *
0007.00 C* load data to subfile
0008.00 C READ RCUST
0009.00 C DOW NOT %EOF AND NOT %ERROR
0010.00 C EVAL @RRN = @RRN +1
0011.00 C EVAL FLD01NO=CUSNO
0012.00 C EVAL FLD01NM=CUSNM
0013.00 C WRITE RCD01A
0014.00 C READ RCUST
0015.00 C ENDDO
0016.00 C* display the trailer
0017.00 C EVAL NOTES='INITAILIZE...'
0018.00 C WRITE TRAILER
0019.00 C DOW 1=1
0020.00 C* display control domain
0021.00 C EXFMT RCD01B
0022.00 C EXSR @CMD
0023.00 C ENDDO
0024.00 C*
0025.00 C @CMD BEGSR
0026.00 C IF *IN03 = *ON
0027.00 C EVAL *INLR = *ON
0028.00 C RETURN
0029.00 C ENDIF
0030.00 C ENDSR
****************** End of data ********************************************
PF的定义参考之前的blog
结果如下:
说明:
1. 首先说下我看完资料全凭记忆手写代码遇到的问题
a)忘了在RPG中给Subfile加SFILE关键字
b)然后是定义@RRN时类型错误。。。看来必须得是4S 0啊(4位Zoned Decimal,0位小数)
2. 这个例子是使用Subfile的最简单的例子,也算是比较经典的一个例子。。。
3. Subfile的一般处理流程:
a)Loading 将需要显示的数据Loading到Subfile中,即WRITE Subfile Format
b)Display 显示Subfile。Subfile control Format中的内容算是heading了
这里要用到两个概念control domain和Subfile domain,这两个要区分好。一定要记住:control domain必须显示在Subfile domain的上方,否则会出错。出错信息为
ID Severity Number
* CPD7812 30 1 Message . . . . : Subfile control record overlaps subfile record.
从这里也可以体会到为什么要写个Trailer Format了,不写不行啊,呵呵
control Format那几个参数基本算是必选的,具体自己研究【一定的弄明白的!】
4. 在RPG中如果没有想Subfile中WRITE数据的话,显示Subfile时是会出错的。错误信息如下
阅读(2956) | 评论(0) | 转发(0) |