免费注册 查看新帖 |

Chinaunix

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

简单的子过程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-10 19:53 |只看该作者 |倒序浏览
先CODE吧.
PF:  ACCTYPE

  1.      A          R RACCTYP
  2.      A            NAME          18A         COLHDG('NAME')
  3.      A            DESC          12A         COLHDG('DESC')
  4.      A          K NAME
复制代码

DSPF: WINDOW2

  1.      A                                      DSPSIZ(24 80 *DS3)
  2.      A                                      CF03
  3.      A                                      CA12(12)
  4.      A          R WINDOW1                   OVERLAY
  5.      A                                      WINDOW(8 20 12 40)
  6.      A                                      WDWTITLE((*TEXT 'RECORD DETAILS') +
  7.      A                                      (*DSPATR HI))
  8.      A                                 10  2'1-SELECT    F12:CANCEL'
  9.      A                                      DSPATR(HI)
  10.      A
  11.      A** BLEOW IS SUBFILE
  12.      A          R SUBF                      SFL
  13.      A            SFLOPT         1A  I  2  2VALUES('1')
  14.      A            SFLNAME       18A  O  2  6
  15.      A            SFLDESC       12A  O  2 25
  16.      A          R SUBFC                     SFLCTL(SUBF)
  17.      A                                      SFLSIZ(9999)
  18.      A                                      SFLPAG(0005)
  19.      A                                      WINDOW(WINDOW1)
  20.      A  32                                  SFLDSP
  21.      A  32                                  SFLDSPCTL
  22.      A  40                                  SFLEND(*MORE)
  23.      A  31                                  SFLCLR
  24.      A                                  1  2'OPT NAME               DESCRIPTION'
  25.      A                                      DSPATR(HI)
  26.      A          R DSP
  27.      A                                      CF05
  28.      A                                  6 17'NAME'
  29.      A                                  6 44'DESC'
  30.      A            W1NAME        18   O  7 17DSPATR(UL)
  31.      A                                      COLOR(WHT)
  32.      A            W1DESC        12   O  7 44DSPATR(UL)
  33.      A                                      COLOR(WHT)
复制代码


RPGLE: SUBPRO

  1.      FACCTYPE   IF   E           K DISK
  2.      FWINDOW2   CF   E             WORKSTN
  3.      F                                     SFILE(SUBF:RRN1)
  4.      DSELEC            PR            30
  5.      D*定义子过程
  6.      DNAME                           18    VALUE
  7.      C                   Z-ADD     *ZERO         RRN1              4 0
  8.      C* RRN1 必须在主程序里面定义,在子过程里定义对于主程序不起作用仍会提示RRN1未定义.
  9.      C                   MOVEL     *BLANK        RESULT           30
  10.      C*同样RESULT 也必须定义长度.
  11.      C                   DOW       NOT(*INKC)
  12.      C                   EXFMT     DSP
  13.      C   KE              DO
  14.      C                   EVAL      RESULT=SELEC(W1NAME)
  15.      C*调用子过程
  16.      C                   MOVEL     RESULT        W1NAME
  17.      C                   MOVE      RESULT        W1DESC
  18.      C                   ENDDO
  19.      C                   ENDDO
  20.      C                   SETON                                        LR
  21.      C                   RETURN
  22.      C*
  23.      PSELEC            B
  24.      **子过程开始
  25.      DSELEC            PI            30
  26.      DW1NAME                         18    VALUE
  27.      DRESULT           S             30
  28.      C                   SETON                                        31
  29.      C                   WRITE     SUBFC
  30.      C                   SETOFF                                       31
  31.      C*                  Z-ADD     *ZERO         RRN1              4 0
  32.      C*这个很是要说明一下见下面
  33.      C     *LOVAL        SETLL     RACCTYP
  34.      C                   READE     RACCTYP                                90
  35.      C                   DOW       *IN90='0'
  36.      C                   ADD       1             RRN1
  37.      C                   EVAL      SFLNAME=NAME
  38.      C                   EVAL      SFLDESC=DESC
  39.      C                   WRITE     SUBF
  40.      C*子过程开始如果执行Z-ADD  0       RRN1 到这一步就会报错。
  41.      C                   READ      RACCTYP                                90
  42.      C                   ENDDO
  43.      C                   SETON                                            40
  44.      C                   WRITE     WINDOW1
  45.      C                   SETON                                            32
  46.      C                   EXFMT     SUBFC
  47.      C                   SETOFF                                           32
  48.      C*取得选择的值
  49.      C                   READC     SUBF                                   80
  50.      C  N80              DO
  51.      C                   MOVEL     SFLNAME       RESULT
  52.      C                   MOVE      SFLDESC       RESULT
  53.      C                   ENDDO
  54.      C                   Z-ADD     0             RRN1
  55.      C*见下面
  56.      C                   RETURN    RESULT
  57.      P                 E
复制代码


下午一直在研究子过程,根据dazzling2000 给的程序,写了这个简单的。
结果也遇到了在WRITE  SUBF时报错.
代码都改成一样,一个报错一个不报错.
只有将Z-ADD     0              RRN1 放到 子过程的结束,就不报错了.
还有种解决方法就是清空子文件放在子过程之外。
至于为什么子过程开始时Z-ADD0     RRN1不行,俺也不知道。
但是dazzling2000的程序却可以正常运行。程序代码改成一模一样还是一个报错,一个不报错。
……

不知道在程序里面用子过程有什么好处,感觉子过程就是一个带入口参数的CALL。
像这个在子过程中显示子文件,感觉很是不稳定。
到觉得不如子程序方便。

最后再附上dazzling2000大大的源程序。
各位可以看看到底为什么子过程开始时不能设为0

注:附件程序源自dazzling2000大大

[ 本帖最后由 uglyneo 于 2007-5-10 20:04 编辑 ]

C__SOURCE.RAR

1.67 KB, 下载次数: 56

论坛徽章:
0
2 [报告]
发表于 2007-05-11 11:12 |只看该作者
怎样单调进子过程啊.编译的时候除了设置DFTACTGRP和DBGVIEW两个参数,还需要设置什么啊.
那位能帮帮忙.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP