- 論壇徽章:
- 0
|
先CODE吧.
PF: ACCTYPE
- A R RACCTYP
- A NAME 18A COLHDG('NAME')
- A DESC 12A COLHDG('DESC')
- A K NAME
復(fù)制代碼
DSPF: WINDOW2
- A DSPSIZ(24 80 *DS3)
- A CF03
- A CA12(12)
- A R WINDOW1 OVERLAY
- A WINDOW(8 20 12 40)
- A WDWTITLE((*TEXT 'RECORD DETAILS') +
- A (*DSPATR HI))
- A 10 2'1-SELECT F12:CANCEL'
- A DSPATR(HI)
- A
- A** BLEOW IS SUBFILE
- A R SUBF SFL
- A SFLOPT 1A I 2 2VALUES('1')
- A SFLNAME 18A O 2 6
- A SFLDESC 12A O 2 25
- A R SUBFC SFLCTL(SUBF)
- A SFLSIZ(9999)
- A SFLPAG(0005)
- A WINDOW(WINDOW1)
- A 32 SFLDSP
- A 32 SFLDSPCTL
- A 40 SFLEND(*MORE)
- A 31 SFLCLR
- A 1 2'OPT NAME DESCRIPTION'
- A DSPATR(HI)
- A R DSP
- A CF05
- A 6 17'NAME'
- A 6 44'DESC'
- A W1NAME 18 O 7 17DSPATR(UL)
- A COLOR(WHT)
- A W1DESC 12 O 7 44DSPATR(UL)
- A COLOR(WHT)
復(fù)制代碼
RPGLE: SUBPRO
- FACCTYPE IF E K DISK
- FWINDOW2 CF E WORKSTN
- F SFILE(SUBF:RRN1)
- DSELEC PR 30
- D*定義子過程
- DNAME 18 VALUE
- C Z-ADD *ZERO RRN1 4 0
- C* RRN1 必須在主程序里面定義,在子過程里定義對于主程序不起作用仍會提示RRN1未定義.
- C MOVEL *BLANK RESULT 30
- C*同樣RESULT 也必須定義長度.
- C DOW NOT(*INKC)
- C EXFMT DSP
- C KE DO
- C EVAL RESULT=SELEC(W1NAME)
- C*調(diào)用子過程
- C MOVEL RESULT W1NAME
- C MOVE RESULT W1DESC
- C ENDDO
- C ENDDO
- C SETON LR
- C RETURN
- C*
- PSELEC B
- **子過程開始
- DSELEC PI 30
- DW1NAME 18 VALUE
- DRESULT S 30
- C SETON 31
- C WRITE SUBFC
- C SETOFF 31
- C* Z-ADD *ZERO RRN1 4 0
- C*這個很是要說明一下見下面
- C *LOVAL SETLL RACCTYP
- C READE RACCTYP 90
- C DOW *IN90='0'
- C ADD 1 RRN1
- C EVAL SFLNAME=NAME
- C EVAL SFLDESC=DESC
- C WRITE SUBF
- C*子過程開始如果執(zhí)行Z-ADD 0 RRN1 到這一步就會報錯。
- C READ RACCTYP 90
- C ENDDO
- C SETON 40
- C WRITE WINDOW1
- C SETON 32
- C EXFMT SUBFC
- C SETOFF 32
- C*取得選擇的值
- C READC SUBF 80
- C N80 DO
- C MOVEL SFLNAME RESULT
- C MOVE SFLDESC RESULT
- C ENDDO
- C Z-ADD 0 RRN1
- C*見下面
- C RETURN RESULT
- P E
復(fù)制代碼
下午一直在研究子過程,根據(jù)dazzling2000 給的程序,寫了這個簡單的。
結(jié)果也遇到了在WRITE SUBF時報錯.
代碼都改成一樣,一個報錯一個不報錯.
只有將Z-ADD 0 RRN1 放到 子過程的結(jié)束,就不報錯了.
還有種解決方法就是清空子文件放在子過程之外。
至于為什么子過程開始時Z-ADD0 RRN1不行,俺也不知道。
但是dazzling2000的程序卻可以正常運行。程序代碼改成一模一樣還是一個報錯,一個不報錯。
……
不知道在程序里面用子過程有什么好處,感覺子過程就是一個帶入口參數(shù)的CALL。
像這個在子過程中顯示子文件,感覺很是不穩(wěn)定。
到覺得不如子程序方便。
最后再附上dazzling2000大大的源程序。
各位可以看看到底為什么子過程開始時不能設(shè)為0
注:附件程序源自dazzling2000大大
[ 本帖最后由 uglyneo 于 2007-5-10 20:04 編輯 ] |
-
-
C__SOURCE.RAR
2007-05-10 19:53 上傳
點擊文件名下載附件
1.67 KB, 下載次數(shù): 56
|