最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

5.6.KLISTの生成

[ Previous ] [ HOME ] [ Upper ] [ Next ]


KLISTを自動的に生成するプログラムを作ってみましょう。この程度なら、何も、APIを使わなくても、DSPFFDのOUTFILEから作成できます。ポイントは、DSPFFDで生成されるOutfileの中のレコードに、キーとなるフィールド名が、そのキー順に、入っているということです。つまり、データを到着順に読み込んで、RPGソースを作ればいいのです。

また、ソースデータを作成する時は、SEQをカウントアップするようにしてください。カウントしなくても、確か、問題はないと思いましたが、ソースを開くと、画面の下に、順番がどうのこうのというメッセージが出てしまいます。また、ソースのSEQをキーにしている場合は、必ずカウントアップした方がいいでしょう。

たいしたプログラムではないので、説明代わりに、ソースを掲載します。(手抜きです。はい。)

KLISTのダウンロード

    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('原始ライブラリー')                

CLP

PGM   (&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 ENDb_debug.gif (282 バイト)

     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
      

RPG

     FQAFDACCPIP  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     

[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送