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

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

よく使うマニュアルです

Wiki

updated on 2004.06.23

9.34.編集語の落とし穴

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


編集コードと2000年

今、西暦2000年問題で、プログラムを修正したり、実行テストをしていますが、場合によって、他の人が作成したプログラムも実行したりします。そのとき、気が付いたのが、これです。本当は、予備校で、紹介したのですが、私も、やっている部分がありました。つまり...

すべて値が0だったら、スペースにしたい場合、やり方としては、大抵、

  1. 値が0かどうか判定して、0の場合にオンになる(オフになる)標識を使って表示または印刷を抑制する

  2. 編集語で、'__/__/__'(ローアースコア[ _ ]は、空白の意味)としてしまう

のどちらかを使っていませんか?

このとき、編集語のパターンだと、2000年の時に、問題になります。

こうなるのだ

このような、ファイルを作成してみます。

edtwrdy2k1.gif (15124 バイト)

つまり、編集語の比較をしようと言うわけです。で、DFUで入力してみます。3レコード入力しました。尚、A1YM1、A1YM2は西暦2桁の年月、A1YYM1,A1YYM2は西暦4桁の年月です。後はおわかりでしょう。

1レコード目:すべて、値は0にする。

edtwrdy2k2.gif (14354 バイト)

2レコード目:2000年を想定した値。

edtwrdy2k3.gif (14722 バイト)

3レコード目:1998年を想定した値。

edtwrdy2k4.gif (14746 バイト)

これを、QRYで表示してみました。

まずは、ゼロサプレスを、1桁目まで、指定した場合。最初の0が出ないものの、セミコロン、ハイフンやスラッシュは表示されていますよね。そのかわり、値が0の場合も、表示されてしまっています。↓

edtwrdy2k6.gif (11421 バイト)

次に、0は全く表示しない場合。よく見て下さい。↓

edtwrdy2k5.gif (10624 バイト)

1レコード目は、思惑通り、スペースになっていますよね。でも、00:00:01がただ1と出て、00/01/01が 1/01としか出ていません。00/01は1としか出ていませんね。スラッシュや、ハイフン、セミコロンは、消えてしまうのです。値は皆正しいのですが、最後にユーザーに表示する部分が、これでは、データが間違っていると、思われてしまいます。

システム日付を2000年にしたり、2000年のデータを入力して、結構、多いことに気づきました。本来は、Y2Kコーナーに入れるべきかもしれないのですが、あえて、ここに入れました。00/00/00をスペースにする場合は、なるべく、比較+抑制の方法を取りましょう。

98/10/10追記

老婆心ながら、00:00:00は、本当にその時間があり得ますよね。私の場合、時間のみ、ということはまれで、日付+時間なので、日付が0でなければ、時間も出す、というロジックです。

1998/10/08


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

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

 

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