Chinaunix首页 | 论坛 | 博客
  • 博客访问: 346692
  • 博文数量: 90
  • 博客积分: 847
  • 博客等级: 准尉
  • 技术积分: 1373
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-02 10:54
个人简介

跌打滚爬中的小菜鸟...

文章分类

全部博文(90)

文章存档

2015年(5)

2013年(47)

2012年(38)

我的朋友

分类: 系统运维

2012-11-18 13:31:50

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.
阅读(1536) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~