TL;DR
改元対応は、新元号だけじゃなくて、和暦が1桁で来ることへの対応も必要・・・かもしれない
要約
- 改元時に顕現するバグがあった
- 和暦年が1桁で来たら発現するバグだった
本文
バグの下地
「全銀フォーマット」の日付項目の仕様
- 年月日をYYMMDDの6桁の「数値」と定義している。「6桁の数値」である。
- 年は和暦年である。
- 元号を識別する情報はない。
バグの内容
- 年月日を、6桁の「文字列」として扱い、年は1~2桁、月は3~4桁、日は5~6桁、として取得している。例:「010502]は、年=01、月=05、日=02、となる。
- 実はその前に、「数値型」に対する処理として先頭のゼロがtrimされていた。
- 和暦年が1桁だと、6桁であるはずの文字列が5桁で入ってきてしまい、おかしなことになる。例:「010502」は、先頭のゼロがtrimされて「10502」となり、年=10、月=50、日=2、となる。
テストしたら検出されるはずだけどね
適切なテストをしてれば摘出されているはずです。でもゴミコーダーがやっつけ実装したなら・・・?前任者がゴミコーダーだったなら・・・?
私は・・・前任者がゴミコーダーだったようです・・・
補足的なもの
全銀フォーマットはXML版が登場していて、そっちは和暦が廃止されている
諸悪の根源である、数値6桁での和暦年月日は、旧フォーマットに成り下がっている。
これから作るシステムは、XML版を採用すべき。
https://www.zenginkyo.or.jp/abstract/efforts/smooth/xml/