5.6.KLISTの生成 |
KLISTを自動的に生成するプログラムを作ってみましょう。この程度なら、何も、APIを使わなくても、DSPFFDのOUTFILEから作成できます。ポイントは、DSPFFDで生成されるOutfileの中のレコードに、キーとなるフィールド名が、そのキー順に、入っているということです。つまり、データを到着順に読み込んで、RPGソースを作ればいいのです。 また、ソースデータを作成する時は、SEQをカウントアップするようにしてください。カウントしなくても、確か、問題はないと思いましたが、ソースを開くと、画面の下に、順番がどうのこうのというメッセージが出てしまいます。また、ソースのSEQをキーにしている場合は、必ずカウントアップした方がいいでしょう。 たいしたプログラムではないので、説明代わりに、ソースを掲載します。(手抜きです。はい。) CMD ('KLISTソースコード生成') PARM KWD(FILE) TYPE(QUAL1) MIN(1) + PROMPT('索引付きファイル') PARM KWD(SRCFILE) TYPE(QUAL2) + PROMPT('原始ファイル') PARM KWD(SRCMBR) TYPE(*NAME) LEN(10) DFT(*FILE) + SPCVAL((*FILE)) + PROMPT('原始メンバー ') QUAL1: QUAL TYPE(*NAME) LEN(10) QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) + SPCVAL((*LIBL)) PROMPT('ライブラリー') QUAL2: QUAL TYPE(*NAME) LEN(10) DFT(QRPGSRC) QUAL TYPE(*NAME) LEN(10) DFT(IPLTEMP) + SPCVAL((*LIBL)) + PROMPT('原始ライブラリー') CLPPGM (&FILLIB &SRLIB &SRCMBR) DCL &FILLIB *CHAR 20 DCL &SRLIB *CHAR 20 DCL &FILE *CHAR 10 DCL &FLIB *CHAR 10 DCL &SRCPF *CHAR 10 DCL &SRCLIB *CHAR 10 DCL &SRCMBR *CHAR 10 MONMSG CPF0000 *N GOTO END CHGVAR &FILE %SST(&FILLIB 1 10) CHGVAR &FLIB %SST(&FILLIB 11 10) CHGVAR &SRCPF %SST(&SRLIB 1 10) CHGVAR &SRCLIB %SST(&SRLIB 11 10) IF (&SRCMBR='*FILE') CHGVAR &SRCMBR &FILE CHKOBJ &FLIB/&FILE *FILE DSPFD FILE(&FLIB/&FILE) TYPE(*ACCPTH) + OUTPUT(*OUTFILE) OUTFILE(QTEMP/QAFDACCP) + OUTMBR(*FIRST *REPLACE) CHKOBJ &SRCLIB/&SRCPF *FILE MONMSG CPF9801 *N CRTSRCPF &SRCLIB/&SRCPF IGCDTA(*YES) CHKOBJ &SRCLIB/&SRCPF *FILE &SRCMBR MONMSG CPF9815 *N ADDPFM &SRCLIB/&SRCPF &SRCMBR SRCTYPE(RPG) OVRDBF QAFDACCP QTEMP/QAFDACCP OVRDBF QRPGSRC &SRCLIB/&SRCPF MBR(&SRCMBR) CALL KLIST01 DLTOVR *ALL DLTF QTEMP/QAFDACCP MONMSG CPF0000 END: RETURN ENDPGM RPGFQAFDACCPIP E DISK FQRPGSRC O F 92 DISK E**************************************************** E* A R R A Y T A B L E * E**************************************************** E SRC 1 27 60 ; I****************************************************** I* D E F I N E D A T A - S T R U C T U R E * I****************************************************** I DS I 1 10 APFILE I 3 5 FILEID I* I DS I 1 60 SRCC I 20 23 KEYID I 43 48 KFLDS C****************************************************** C* M A I N - R O U T I N E ; C****************************************************** B001 C APACCP IFEQ 'A' :到着順即時終了 001 C MOVE *ON *INLR : 001 C RETRN ; E001 C END : C* : B001 C *IN80 IFEQ *OFF : 001 C EXSR @KLIST ; 001 C MOVE *ON *IN80 ; E001 C END : C* : C EXSR @KFLD ;KFLD部分 C* ; CLR RETRN ; C****************************************************** C* S U B - R O U T I N E ; C****************************************************** C*----------------------------------------------------* C @KLIST BEGSR : C*----------------------------------------------------* B001 C 1 DO 4 CC 30 : 001 C ADD 100 SEQ 60 : 001 C Z-ADD0 DAT 60 : 001 C MOVELSRC,CC SRCC : 001 C EXCPT#SRC : E001 C END : C* : C ADD 100 SEQ : C Z-ADD0 DAT : C MOVELSRC,5 SRCC : C MOVELFILEID KEYID :お好きに C EXCPT#SRC : C* : C ENDSR : C*----------------------------------------------------* C @KFLD BEGSR :KFLD部分 C*----------------------------------------------------* C ADD 100 SEQ : C Z-ADD0 DAT : C MOVELSRC,6 SRCC : C MOVELAPKEYF KFLDS :キーフィルド名 C* : C EXCPT#SRC : C* : C ENDSR : O*************************************************** O* Output Module * O*************************************************** OQRPGSRC E #SRC O SEQ 6 O DAT 12 O SRCC 72 ** ....1....+....2....+....3....+....4....+....5....+....6.... C****************************************************** 1 C* @DEF PLIST / KLIST / DEFINITION ; 2 C****************************************************** 3 C* ; 4 C KYXXX KLIST ; 5 C KFLD XXXXXX ; 6 |
You are at K's tips-n-kicks of AS/400
|
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||