昨日、我々が提供しているソフトウェアでエラーが発生しました。
10年前に導入をして、もう完全に枯れたと思っていました。
しかし、「障害」はいつも突然やってくるものなんですね!
最初、電話を受けたときは、関連するマスタ設定の不備や、設定ファイル上の設定ミスが原因だと決めつけていたのですが、エラーログを調べていくうちに、プログラム内部の問題であると疑いはじめてきました。
幸いにして、火曜日にそのソフトウェアを自PCで起動できる状態にしていたのです。
この「引き寄せ」、
いったい何なのでしょう?
インボイス制度関連で、近々改変する機会がありそうだと準備をしていたのですが、まさか環境構築後2日目にして本格的に使うようになるとは!
バグの原因にたどり着くまでには、3時間近くかかってしまいました。
具体的に言うと、Int関数を使うべきところを、CInt関数を使っていた!!
リンクのページを参照させていただきましたが、CInt関数は常に最も近い整数に値を丸めるとのこと。小数部分が、0.5の時に限り、最も近い偶数に値を丸めるので、四捨五入にならない。
CInt(2.4) --> 2 CInt(2.5) --> 2 CInt(2.6) --> 3
今回のケースでは、上の例では、すべて2になって欲しかったので、Int関数へ変更。
発生源についてのコード修正は、わずか1文字を削除しただけ!
(他にも防御的プログラミングとして改善は加えましたが……)
無事、解決できて、安心しました!
まとめ
今回の関数は、以前から知りませんでしたが、久しぶりに触れる言語は、正直しんどいです。
今は、Javaやphpに慣れ親しんでいるので、違和感しかありませんでした。
10年ぶりという時間がそうさせるのだと思います。
とはいえ、今回、いい勉強になりました。
また近々、このアプリについての改変は、発生する可能性が大なので、これを気に、当アプリの全体を俯瞰しておきたいと思っております。