新聞を読んでいたら「どっこい生きてるCOBOL」という記事をみつけた。昔使っていたプログラム言語COBOLが今でも使われているという。さすがにCOBOLの使える技術者は少なくなり高齢のプログラマは定年で辞めていくから、若い技術者の教育も難しい状況なのだという。
当時のことをちょっと書いてみたい。COBOL は金融機関のシステム開発の現場で使われていた言語である。銀行で使う場合はデータ処理を10進法のままで加減乗除の計算をする必要がある。特に数値の四捨五入の際に計算誤差を生じ易いから、技術計算のように2進法にして処理するのは無理なのだ。倍精度でいくら精度をあげても根本的な解決にはならない。
金融機関に新しいコンピュータを売り込むにはベンチマークテストを通らねばならない。銀行側のプログラムを手直しなしで処理できることを求められる。あるときテストの場で同じ結果が得られないことがあった。当然こちらのコンピュータに疑いの目が向けられる。詳しく調べた結果、膨大なプログラムの中に一か所、特定の式の評価直後に問題が起きそうな部分を発見した。ようやく突き止めたその式の計算中に四捨五入による繰り上げ誤差が生じているようだ。そこで、その部分だけ実際に手計算で確認してみると当社の計算の方が正しいことが明白となった。
しかしこれで話は終わらなかった。銀行側はトラブルの原因がそこにあることを認めたが、当社のシステムを使うと今までのお客様へ伝えていたデータ値(主に金額)が、実は間違っていたことを公にしなければならなくなる。それは困ると言うのである(利息計算の結果が間違っていたとしたら、それは由々しきことですね)。今まで通りの間違った値を出力するように修正して欲しいという。しかし、丸めの誤差の修正だけなら簡単だが、技術者の端くれとしてそのような不正行為の片棒を担ぐことには抵抗がある。
私の役わりはここまでだったので、その後の結末がどうなったのかは知らない。![]()
0 件のコメント:
コメントを投稿