免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 12532 | 回复: 24
打印 上一主题 下一主题

[原创]SUBFILE中数值自动累加功能(RPGLE技巧一则) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-12 11:42 |只看该作者 |倒序浏览
整理了一个能对SUBFILE中的列出的数据进行自动累加的技巧,本人自觉得非常实用,特地拿出来和大家分享!
DSPF代码:

  1. A                                      DSPSIZ(24 80 *DS3)               
  2. A                                      CA03(99)                        
  3. A*-------------------------------------------------------------------  
  4. A          R SUBDAT                    SFL                               *SUBFILE
  5. A            SUBOPT         1A  B  3  3CHECK(ER)               *选项字段         
  6. A            SUBAMT         7Y 2B  3  9EDTWRD('     .  ')      *数值字段         
  7. A*-------------------------------------------------------------------  
  8. A          R SUBCTL                    SFLCTL(SUBDAT)           *SUB CONTROL         
  9. A                                      OVERLAY                          
  10. A  65                                  SFLDSP                           
  11. A  75                                  SFLDSPCTL                        
  12. A  30                                  SFLINZ                           
  13. A  50                                  SFLCLR                           
  14. A  40                                  SFLEND(*MORE)                    
  15. A                                      SFLSIZ(0099)                     
  16. A                                      SFLPAG(0012)                     
  17. A            DSPRCD         4S 0H      SFLRCDNBR(CURSOR)      *显示当前光标行数的字段         
  18. A            RELRCD         5S 0H                                              *用于控制光标行数的字段
  19. A                                  2  2'Opt.   Amount  '               
  20. A                                      DSPATR(HI)                       
  21. A                                      DSPATR(UL)                       
  22. A*-------------------------------------------------------------------  
  23. A          R TOTFMT                                                     
  24. A                                      OVERLAY                          
  25. A                                 18  1'Total:'                        
  26. A            TOTAMT         8Y 2O 18  8EDTCDE(3)                   *显示累加结果
复制代码


RPGLE代码:

  1. FCNDDBG    CF   E             WORKSTN SFILE(SUBDAT:RRN)               
  2. C*-------------------------------------------------------------------  
  3. C**   MAIN ROUTINE                                                     
  4. C*-------------------------------------------------------------------  
  5. C                   DOW       *IN99='0'                                 
  6. C*WRITE DATA TO SUBDAT                                    *往SUBFILE里赋值                 
  7. C     1             DO        20            X                 2 0      
  8. C                   EVAL      SUBAMT=X * 10                             
  9. C                   EVAL      RRN=RRN + 1                              
  10. C                   WRITE     SUBDAT                                    
  11. C                   CLEAR                   SUBDAT                     
  12. C                   ENDDO                                               
  13. C*DISPLAY SUBCTL                                                *显示SUBFILE和累加结果         
  14. C     LOOP_TAG      TAG                                                
  15. C                   WRITE     TOTFMT                                    
  16. C                   SETON                                        657540
  17. C                   EXFMT     SUBCTL                                    
  18. C                   SETOFF                                       657540
  19. C*CALCULATE TOTAL AMOUNT                                                
  20. C                   IF        *IN99='0'                                 
  21. C                   READC     SUBDAT                                 10   *读取SUBFILE的变化
  22. C                   IF        *IN10='0'                                 
  23. C                   IF        RRN=20                                    
  24. C                   EVAL      RRN=1                                    
  25. C                   ELSE                                                
  26. C                   EVAL      RRN=RRN + 1                              
  27. C                   EVAL      DSPRCD=RRN                                *操作后光标置于后一项
  28. C                   EVAL      RELRCD=RRN                                
  29. C*SELECT AMOUNT                                                         *累加操作
  30. C                   EVAL      RRN=0                                    
  31. C                   SETOFF                                       11     
  32. C                   DOW       *IN11='0'                                 
  33. C                   EVAL      RRN=RRN + 1                              
  34. C     RRN           CHAIN     SUBDAT                             11     
  35. C                   IF        *IN11='0' AND SUBOPT='Y'                  
  36. C                   EVAL      TOTAMT=TOTAMT + SUBAMT                    
  37. C                   ENDIF                                               
  38. C                   ENDDO                                               
  39. C                                                                       
  40. C                   ENDIF                                               
  41. C                   ENDIF                                               
  42. C                   GOTO      LOOP_TAG                                 
  43. C                   ENDIF                                               
  44. C                                                                       
  45. C                   ENDDO                                               
  46. C                   SETON                                        LR     
  47. C*-------------------------------------------------------------------   
  48. C**   INITIALIZE                                                        
  49. C*-------------------------------------------------------------------   
  50. C     *INZSR        BEGSR                                               *初始化子程序
  51. C                   SETON                                        50     
  52. C                   WRITE     SUBCTL                                    
  53. C                   SETOFF                                       50     
  54. C                                                                       
  55. C                   Z-ADD     *ZEROS        RRN               4 0      
  56. C                   MOVEL     *BLANKS       TOTAMT                     
  57. C                   Z-ADD     1             DSPRCD                     
  58. C                   Z-ADD     1             RELRCD                     
  59. C                                                                       
  60. C                   ENDSR                                               
复制代码


图例:

Picture1.jpg (11.27 KB, 下载次数: 134)

Picture1.jpg

论坛徽章:
0
2 [报告]
发表于 2004-11-12 12:40 |只看该作者

[原创]SUBFILE中数值自动累加功能(RPGLE技巧一则)

在哪呢?

论坛徽章:
0
3 [报告]
发表于 2004-11-12 12:57 |只看该作者

[原创]SUBFILE中数值自动累加功能(RPGLE技巧一则)

操作实现的关键在:
1.DSPF中的KEYWORD
  1. A            SUBOPT         1A  B  3  3CHECK(ER)
复制代码

CHECK(ER):当字段最后一个位置键入字符结束后,记录就由设置送出,类似于按下回车键(ENTER)
2.RPGLE中的READC
READC:读取SUBFILE中修改过的记录

论坛徽章:
0
4 [报告]
发表于 2004-11-12 13:08 |只看该作者

[原创]SUBFILE中数值自动累加功能(RPGLE技巧一则)

以后发这种原创最好能把代码加上注释或说明 让初学者都能看懂 我想会更好 加精~ 期待更多的原创出来

论坛徽章:
0
5 [报告]
发表于 2004-11-12 13:44 |只看该作者

[原创]SUBFILE中数值自动累加功能(RPGLE技巧一则)

呵呵....我已经加了注释了!有问题随时答复!

论坛徽章:
0
6 [报告]
发表于 2004-11-12 21:30 |只看该作者

[原创]SUBFILE中数值自动累加功能(RPGLE技巧一则)

注释很清楚。看来楼主用的是中文系统了。。。

论坛徽章:
0
7 [报告]
发表于 2004-11-12 22:17 |只看该作者

[原创]SUBFILE中数值自动累加功能(RPGLE技巧一则)

呵呵...我们公司用的是全英文的系统,那些注释是我发贴时加上去的,方便大家了解!

论坛徽章:
0
8 [报告]
发表于 2004-11-13 08:56 |只看该作者

[原创]SUBFILE中数值自动累加功能(RPGLE技巧一则)

不错,我们以前做这种录入的比较少,大多都是程序手动加

论坛徽章:
0
9 [报告]
发表于 2004-11-15 09:55 |只看该作者

[原创]SUBFILE中数值自动累加功能(RPGLE技巧一则)

up!

论坛徽章:
0
10 [报告]
发表于 2004-11-19 14:26 |只看该作者

[原创]SUBFILE中数值自动累加功能(RPGLE技巧一则)

受用
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP