今さらですが、元号対応関連で残念な事故があったので考察してみました。
事象
帳票の日付が「平成31年」ではなく「平成3元年」と印字される。
原因
明日は我が身なので詳しい原因が知りたいところですが、それらしい情報が見当たりませんでした。
あくまでも推測
SVFの定義体で和暦変換していて、元年の変換条件が誤っている?
なぜそう思ったか
- ギョームシステムの帳票といえばSVF!という安直な発想
- SVFの定義体と元号定義の変更だけならアプリケーションサーバ等の再起動が要らない
- SVF販売元のFAQに気になる記載があった
和暦変換関数は、和暦が次の元号になっても使用できますか。
和暦変換関数(SEI2WA 等)を用いて和暦を出力する場合、「01年」 は 「元年」 に変換されません。
推測が正しいとするとどうなるのか
和暦変換する
3種類ありますが、お役所で「01年」という表記はしないと思うので、ゼロサプレスのあるSEI2WA1Zの一択になると思います。
入力値→ | 2019/04/30 | 2019/05/01 |
---|---|---|
SEI2WA | 平成310430 | 令和010501 |
SEI2WA1 | 平成31年04月30日 | 令和01年05月01日 |
SEI2WA1Z | 平成31年4月30日 | 令和1年5月1日 |
全角変換する
お役所と新聞は全角が好き。理由は知らない。
TOJISで一発。
入力値→ | 平成31年4月30日 | 令和1年5月1日 |
---|---|---|
TOJIS | 平成31年4月30日 | 令和1年5月1日 |
1年って何だよ元年だろ
REPLACEで「1年」を「元年」に置換しよう。
入力値→ | 平成31年4月30日 | 令和1年5月1日 |
---|---|---|
REPLACE | 平成3元年4月30日 | 令和元年5月1日 |
ギャーーーーーー!!!
対処方法
「令和1年」を「令和元年」に置換すれば解決だけど、それだと20年後くらいにまた困るんじゃない?
和暦対応をやめてすべて西暦にする。
おまけ
令和元年5月元日