もう随分前ですが、Pentiumのチップが計算ミスを起こすという話がありました。まだ2000年は超えていない時です。




今回はそういう話ではなく「なんか計算結果がヘン」という話題であります。


先日頼まれた修正で「ここの数字に係数を掛けてくれればそれでいいから」というシステムの改修がありました。話を聞くとたいしたことはありません。が、結構奥が深かったのです。




まず、改修にあたり確認すると、VBAで書いているところと、ワークシートに計算式を埋めているところがありました。そういえば話を聞いたとき、「両方使ってるけど、ワークシート関数の方が速い」とか聞いた覚えがあります。


そこはまあよかったんです。




で、VBAでの計算とワークシートの計算を比較したのですが、値が合わないのです。




結論からいいますと、ワークシート関数は正確でした。VBAは式を分ければ正解でした。実はちょっとくやしいのです。式を分けようが分けまいが、やはり同じ結果を返して欲しかった。こういうのがテクニックになるのがとても悲しく思います。




ただ、昔のエンジニアは事務計算か科学技術計算かは分かってプログラミングしてたと思うのです。私が式を分けた、というのはそういう過去の蓄積からなんとなく気付いたからにすぎません。






ここで質問です。


なぜCOBOLが「事務計算用」なのでしょう?




私の考えている解に近い方には、抽選で1名様に東京の新大塚か銀座の魚の旨い店でご馳走、ってのでどうでしょう。


地方からの人なら宿提供(男女ともにも安心して泊まれる場所は提供できます。都心からは少し離れているので・・)も可ですので。ただ、その際は時期は話し合いましょう。




まあ、そんなこんなでメッセージいただければと思います。