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

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

よく使うマニュアルです

Wiki

updated on 2004.06.23

a.11. 2000年問題 其の拾壱

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


変換ばっちり、でないところあった。

いろいろテストしてて、気づいた。下記のリストのCALLの後で、パラメータをクリアしないとおかしくなる。早速修正。テストでは、都合よく、桁の小さいものから大きいものへテストしていた。

     H******************************************************
     H* 2000年変換自動生成                               *
     H*      CALL CVTY2K2  00000098  -> 00001998   Y       *
     H*        PARM A(8)   00009801  -> 00199801   YM      *
     H*        PARM A(5)   00980101  -> 19980101   YMD     *
     H*                    00010198  -> 19980101   MDY     *
     H*                    00199801  -> 00199801   YYM     *
     H*                    19980101  -> 19980101   YYMD    *
     H*                    01011998  -> 19980101   MDYY    *
     H******************************************************
     H            Y/                                    1
     F\#MNUHEDIP  E           K        DISK
     F            #MNUHEDR                          KRENAMEINPUT
     F#MNUHEDPO   E                    DISK
     F            #MNUHEDR                          KRENAMEOUTPUT
     I******************************************************
     I*       D E F I N E   I N P U T   F I E L D          *
     I******************************************************
     IINPUT
     I              MHQDAT                          @HQDAT
     C******************************************************
     C*             M A I N -  R O U T I N E               :
     C******************************************************
     C                     EXSR @TODB                      :
     C*                                                    :
     C                     WRITEOUTPUT                     :
     C                     CLEAROUTPUT                     :
     CLR                   RETRN                           :
     C*----------------------------------------------------*
     C           @TODB     BEGSR                           :
     C*----------------------------------------------------*
     C*====================================================*
     C*旧フィ−ルド< RENAME >
     C* ・MHQDAT (P006.00)  < @HQDAT >
     C* ・TEXT(QDATE)
     C*新フィ−ルド
     C* ・MHQDAT (P008.00)
     C* ・TEXT(QDATE)
     C*====================================================*
     C                     MOVE @HQDAT    PBDAT            :
     C                     CALL 'CVTY2K2'                  :変換PGM
     C                     PARM           PBDAT   8        :
     C                     PARM           PIFMT   5        :
     C                     MOVE PBDAT     MHQDAT           :
     C                     MOVE *BLANK    PBDAT       b_debug.gif (341 バイト)
     C*                                                    :
     C                     ENDSR                           :
              

それから、日付以外のフィールドも修正したいという要望が出た。すると、例の外サブにデータがいってしまう。たとえば、ジョブ名を8バイトから10バイトにしたいらしい。なぜジョブ名が8バイトかは知らないが、それでは、文字がわたってしまう。最初、外サブの受け取りパラメータに、数字検査をしようと思った。しかし、よく考えてみると、そんなデータを渡す部分があってはならない。外サブではじいてしまったら、気づかないではないか。修正はやめた。どうせデシマルエラーになるので、テストで、気づくでしょう。そしたら、自動生成したプログラムを、修正すればいい。あくまで、これは、日付変換なのだ。たぶん、iのリネームを生かして、外サブのコール部分を修正して行くだろう。同じフィールド名で、桁が違えば、コンパイルエラーのはずです。

それから、転送プログラムの自動生成で、「転送命令の対象フィールドリスト」のスプール出力、「変換対象フィールド」のファイルへの出力をした。このファイルを元に、プログラムの検索をしてみる価値がある。手でいちいち検査するのはいやだ。但し、自動生成の後で、手作業で修正したら、このファイルもメンテしなくてはならない。

さらに、自動化できないか

たとえば、古いレイアウトのファイルAから、新しいレイアウトのファイルを作成する場合なのだが、

対象ファイル名 ワークファイル名 ファイルライブラリー名 新ファイルソースライブラリー名 変換プログラム名 変換プログラムライブラリー名 変換プログラムソースライブラリー名
TOKMASP \TOKMASP DBFLIB Y2KSRC TOKMASPR Y2KLIB Y2KSRC
  1. DSPDBR DBFLIB/TOKMASP OUTFILE(DSPDBR)            
  2. RNMOBJ DBFLIB/TOKAMSP *FILE \TOKMASP             
  3. CRTPF DBFLIB/TOKMASP Y2KSRC/QDDSSRC ...            
  4. CRTRPGPGM Y2KLIB/TOKMASPR Y2KSRC/QRPGSRC ...             
  5. DLTF \TOKAMSPのすべての論理ファイル(DSPDBRより)             
  6. CALL TOKMASPR            
  7. CRTLF TOKMASPの論理ファイル(DSPDBR)より            

こんなことできないかな。もちろん、変換プログラムは事前に、テスト機ですべて実行テストをするものとします。このあと、上記のことを、本番機でやりたいのです。うまくいくのかなぁ。それから、QDATFMTをMDYからYMDにしたことも、結構、ストレスになりそうです。RTVSYSVAL QDATEとか(%SST)、CVTDATで*MDYを指定したものがあるらしい(*SYSVALのままならいいのに)、RPGのTIME命令の後で、DS分解したものなど(自分がやっている)いろいろでてきそう。AS/400自体も大丈夫かなぁ?WROKJOBSCDEもきちんと動くかな?

続く..


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

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

 

Ads by TOK2