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

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

よく使うマニュアルです

Wiki

updated on 2004.06.23

a.18. 2000年問題 其の拾捌

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


久しぶりのY2Kアップです。現在、作業は全プログラム(RPG、CLP、DSPF)の修正を完了したところです。

ファイルは一つにまとめた

Y2Kと言う112桁のソースファイルを作成して、そこへ、RPG、CLP、DSPF、RPGLEをまとめて格納した。ソースを分けると、いちいち、FNDSTRPDMをソースファイル単位にしなくてはならないのが、面倒だったのです。また、112バイトにしても(RPGLEに合わせた)、CRTCLPGM,CRTDSPF、CRTRPGPGMなどはなんら問題なく実行できます。

ノートを作成

変更すべきフィールドの一覧を、EXCELにダウンロードして、B5の無地のルーズリーフに印刷して、チェック用にしました。

修正項目

TIME命令の日付の桁を8桁にする。

大抵は、データ構造なので、120DSQDATを140DSQDATに変換してゆきます。但し、帳票の日付は6桁のままにします。これも、TIME命令の部分を修正しています。UDATE(6桁)は基本的に使わないことにしました。よって、

     I            DS
     I                                        1  120DSDTTM
     I                                        1   60DSQTIM
     I                                        7  120DSQDAT        
              を        
     I            DS
     I                                        1  140DSDTTM
     I                                        1   60DSQTIM
     I                                        7  140DSQDAT
     I                                        9  140DSQDA6        

に変換してゆきました。勿論、O仕様書の日付部分はDSQDA6にしています。

ワークフィールドの修正

ワークフィールドを6桁として、日付を受け取るものは8桁に変更しました。

データ構造で年月日を分解して、月や日を取りだすものを探し出し、修正しました。

年月のみは4桁から6桁へ修正して、これをデータ構造で分解する部分も修正しました。

画面ファイルの修正

EDTCDE(Y)は基本的にEDTCDE(4)にしました。99/99/99を99999999にしたわけです。勿論、ゆとりがあれば、9999/99/99にしました(EDTWRD)。REFFLDでそのままデータベースのフィールドを使っていて、もう画面に入りきらない部分は、-2して、フィールド名を変更して、RPGの該当部分を修正しました。

CLP内の年

当初、RTVSYSVAL QCENTURYを取り出し、0なら19、1なら20を、QYEARにつけていたのですが、本番機がV3R1のため、利用できません。PTFを当てると出来るらしいのですが、もうその気力がありません。そこで、40以上が19、40未満が20の方式にしました。また、6桁の日付は、CVTDATで*YYMDに変換するようにしました。これに伴い、多くの外サブの日付パラメータを修正しました。中には、そのまま残したものもあります。日付の大小関係の判定が無ければ問題ありません。

OPNQRYFの修正

MAPFLDで年月日+時間を *ZONE 12 0にしている部分を、*ZONE 14 0に変更しました。また、QRYSLTで日付を参照している部分の修正もしました。

%SSTの修正

CLPでは、データ構造は使えないので、データの分解は専ら、Substringを利用するはずですね。これも、拾い出して修正しました。特に、日付を分解する部分や年月を分解する部分の開始位置と桁数の修正は忘れると、後でやばいです。

パラメータ

これが一番問題でした。修正しても、後で、修正したものを一括して判定することができません。PLISTのみ取りだすことは出来ても、修正した桁数が、その部分かは不明です。あるいは、CLPでは、どうしようもないですよね。そこで、ここは、逐次ノートを取りだしました。面倒です。

変更のあったプログラムの割り出し

結局、Y2Kというファイルにコピーした時、すべてのソースの変更日付がリセットされてしまいました。そこで、

CPYF Y2K Y2KCHG INCCHR(*RCD 7 *GE 980427) FROMMBR(*ALL) TOMBR(*FROMMBR) MBROPT(*REPLACE)  

として、Y2KCHGというソースメンバーにメンバーを追加しました。ここには、変更のある行のみが入ります。そして、変更の無いソースはメンバーが作成されるだけで、レコード件数は0です。これを、DSPFD Y2KCHG *MBRLISTをOUTFILEに作成して、EXCELに落としました。ここで、レコード件数が0のものは、修正は無いことが分かります。もちろん、コンパイルはレベルチェック回避にすべてします。

今後の、暗い見通しとやる気を無くすこと

これから、コンパイルをして、一個、一個、テストしてゆきます。一個、一個、ですよ。はぁー。しかし、これだけやっても、ボスからは「余裕のある見積もりだったのは、知っていたよ」といわれました。あーあ、やる気なくすよ。じゃ、やって見せろよ!

続く... 


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

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

 

Ads by TOK2