免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: bobofish29
打印 上一主题 下一主题

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

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

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

大家平时在用RPG时有什么好的方法都拿出来分享一下!

论坛徽章:
0
12 [报告]
发表于 2005-07-28 13:04 |只看该作者

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

谢谢楼主提供的源代码。有两个小的问题:1只能加不能减。2最后一行的数初始时加不上。现加以小改,以示参考。
  
      
     FVTEST02   CF   E             WORKSTN SFILE(SUBDAT:RRN)
     C*----------------------------------------------------------------
     C**   MAIN ROUTINE
     C*----------------------------------------------------------------***
     C                   DOW       *IN99='0'
     C*WRITE DATA TO SUBDAT                                    *SUBFILE
     C     1             DO        20            X                 2 0
     C                   EVAL      SUBAMT=X * 10
     C                   EVAL      RRN=RRN + 1
     C                   WRITE     SUBDAT
     C                   CLEAR                   SUBDAT
     C                   ENDDO
      *       D A T E N S T R U K T U R E N                              *
      *------------------------------------------------------------------*
     C*DISPLAY SUBCTL
     C     LOOP_TAG      TAG
     C                   WRITE     TOTFMT
     C                   SETON                                        657540
     C                   EXFMT     SUBCTL
     C                   SETOFF                                       657540
     C*CALCULATE TOTAL AMOUNT
     C                   IF        *IN99='0'
     C                   READC     SUBDAT                                 10
     C                   IF        *IN10='0'
     定位光标位置----------------------------------------------
             C                   IF        RRN=20
     C                   EVAL      RRN=1
     C                   EVAL      DSPRCD=RRN
     C                   EVAL      RELRCD=RRN
     C                   ELSE
     C                   EVAL      RRN=RRN + 1
     C                   EVAL      DSPRCD=RRN
     C                   EVAL      RELRCD=RRN
     C                   ENDIF
     ------------------------------------------------

             C*SELECT AMOUNT
     C                   EVAL      RRN=0
     C                   SETOFF                                       11
     初始化TOTAMT值---------------------
             C                   eval      totamt=0
     -------------------------------------------------------------

             C                   DOW       *IN11='0'
     C                   EVAL      RRN=RRN + 1
     C     RRN           CHAIN     SUBDAT                             11
     C                   IF        *IN11='0' AND SUBOPT='Y'
     C                   EVAL      TOTAMT=TOTAMT + SUBAMT
     C                   ENDIF
     C                   ENDDO
     C
     C                   ENDIF
     C                   GOTO      LOOP_TAG
     C                   ENDIF
     C
     C                   ENDDO
     C                   SETON                                        LR
     C**   INITIALIZE
     C*-------------------------------------------------------------------
     C     *INZSR        BEGSR
     C                   SETON                                        50
     C                   WRITE     SUBCTL
     C                   SETOFF                                       50
     C
     C                   Z-ADD     *ZEROS        RRN               4 0
     C                   MOVEL     *BLANKS       TOTAMT
     C                   Z-ADD     1             DSPRCD
     C                   Z-ADD     1             RELRCD
     C
     C                   ENDSR
     C
     C
浪人浪语,竟请海涵。

论坛徽章:
0
13 [报告]
发表于 2005-07-28 13:19 |只看该作者

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

创意不错,不过竟然有GOTO,不评价。

论坛徽章:
0
14 [报告]
发表于 2005-07-28 14:04 |只看该作者

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

既然用了CHECK(ER),只需要操作当前的光标所在的行就行了
循环累加就没有必要了.

论坛徽章:
0
15 [报告]
发表于 2005-08-05 19:39 |只看该作者

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

不错!!!!!!!!!!!

论坛徽章:
0
16 [报告]
发表于 2005-08-05 21:58 |只看该作者

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

ding!

论坛徽章:
0
17 [报告]
发表于 2005-08-06 15:00 |只看该作者

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

还是不明白,光标定位如何实现的

论坛徽章:
0
18 [报告]
发表于 2005-08-06 16:21 |只看该作者

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

我把上面的两段程序都原样的在自己的系统里写了下来.可为什么编译时通不过呢?

论坛徽章:
0
19 [报告]
发表于 2007-07-06 17:41 |只看该作者
对RPGLE程序作了一些修改,不使用goto也可以实现。

     FMOUTDSPF  CF   E             WORKSTN SFILE(SUBDAT:RRN)
     C*-
     C**   MAIN ROUTINE
     C*-
     C                   DOW       *IN99='0'
     C*WRITE DATA TO SUBDAT                                            
     C     1             DO        20            X                 2 0
     C                   EVAL      SUBAMT=X * 10
     C                   EVAL      RRN=RRN + 1
     C                   WRITE     SUBDAT
     C                   CLEAR                   SUBDAT
     C                   ENDDO
     C*DISPLAY SUBCTL                                                       
     C                   Move      '0'           Tag               1
     C                   DoW       Tag = '0'
     C                   WRITE     TOTFMT
     C                   SETON                                        657540
     C                   EXFMT     SUBCTL
     C                   SETOFF                                       657540
     C                   If        *IN99='1'
     C                   Leave
     C                   EndIf
     C*CALCULATE TOTAL AMOUNT
     C                   IF        *IN99='0'
     C                   READC     SUBDAT                                 10SUBFILE
     C                   IF        *IN10='0'
     C                   IF        RRN=20
     C                   EVAL      RRN=1
     C                   EVAL      DSPRCD=RRN                                   
     C                   EVAL      RELRCD=RRN
     C                   ELSE
     C                   EVAL      RRN=RRN + 1
     C                   EVAL      DSPRCD=RRN                                   
     C                   EVAL      RELRCD=RRN
     C                   EndIf
     C*SELECT AMOUNT
     C                   EVAL      RRN=0
     C                   SETOFF                                       11
     C                   Eval      Totamt=0
     C                   DOW       *IN11='0'
     C                   EVAL      RRN=RRN + 1
     C     RRN           CHAIN     SUBDAT                             11
     C                   IF        *IN11='0' AND SUBOPT='Y'
     C                   EVAL      TOTAMT=TOTAMT + SUBAMT
     C                   ENDIF
     C                   ENDDO
     C                   ENDIF
     C                   Iter
     C                   ENDIF
     C                   ENDDO
     C                   ENDDO
     C                   SETON                                        LR
     C                   Return
     C*----------------------------------------------------------
     C**   INITIALIZE
     C*----------------------------------------------------------
     C     *INZSR        BEGSR                                              
     C                   SETON                                        50
     C                   WRITE     SUBCTL
     C                   SETOFF                                       50
     C                   Z-ADD     *ZEROS        RRN               4 0
     C                   MOVEL     *BLANKS       TOTAMT
     C                   Z-ADD     1             DSPRCD
     C                   Z-ADD     1             RELRCD
     C                   ENDSR


论坛徽章:
0
20 [报告]
发表于 2010-08-21 20:21 |只看该作者
good sharing~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP