a.11. 2000年問題 其の拾壱 | |||||||||
変換ばっちり、でないところあった。いろいろテストしてて、気づいた。下記のリストの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
それから、日付以外のフィールドも修正したいという要望が出た。すると、例の外サブにデータがいってしまう。たとえば、ジョブ名を8バイトから10バイトにしたいらしい。なぜジョブ名が8バイトかは知らないが、それでは、文字がわたってしまう。最初、外サブの受け取りパラメータに、数字検査をしようと思った。しかし、よく考えてみると、そんなデータを渡す部分があってはならない。外サブではじいてしまったら、気づかないではないか。修正はやめた。どうせデシマルエラーになるので、テストで、気づくでしょう。そしたら、自動生成したプログラムを、修正すればいい。あくまで、これは、日付変換なのだ。たぶん、iのリネームを生かして、外サブのコール部分を修正して行くだろう。同じフィールド名で、桁が違えば、コンパイルエラーのはずです。 それから、転送プログラムの自動生成で、「転送命令の対象フィールドリスト」のスプール出力、「変換対象フィールド」のファイルへの出力をした。このファイルを元に、プログラムの検索をしてみる価値がある。手でいちいち検査するのはいやだ。但し、自動生成の後で、手作業で修正したら、このファイルもメンテしなくてはならない。 さらに、自動化できないかたとえば、古いレイアウトのファイルAから、新しいレイアウトのファイルを作成する場合なのだが、
こんなことできないかな。もちろん、変換プログラムは事前に、テスト機ですべて実行テストをするものとします。このあと、上記のことを、本番機でやりたいのです。うまくいくのかなぁ。それから、QDATFMTをMDYからYMDにしたことも、結構、ストレスになりそうです。RTVSYSVAL QDATEとか(%SST)、CVTDATで*MDYを指定したものがあるらしい(*SYSVALのままならいいのに)、RPGのTIME命令の後で、DS分解したものなど(自分がやっている)いろいろでてきそう。AS/400自体も大丈夫かなぁ?WROKJOBSCDEもきちんと動くかな? 続く.. |
|
You are at K's tips-n-kicks of AS/400
|
|
|||
|
|