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 C* : C ENDSR : それから、日付以外のフィールドも修正したいという要望が出た。すると、例の外サブにデータがいってしまう。たとえば、ジョブ名を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
|
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||