業務アプリケーションの数値計算
連載記事:アプリケーション開発技術 第7回
帳票フレームワークのページで業務アプリケーションにおける小数点以下の扱いについて話題にしました。Javaの場合はBigDecimalによって対応すればいいのですが、C(C++)言語の場合どうすればいいのでしょうか。
C言語で帳票ロジックを書かなければいい?そんなに簡単なものでしょうか。バッチで扱う大量のデータを軽んじてはいけません。Javaはメモリ資源も多く使います。C言語に比べれば性能面でも劣勢です。(プログラマの力量でねじふせますか?昔BASICより遅いアセンブラプログラムという揶揄もありましたが・・・ )
DBにOracleを利用している場合ORA-01555という難敵も相手にしなくてはいけません。ORA-01555が出る前にDBセッションを解放するために帳票出力情報をCプログラムで準備 してからJava帳票プログラムを実施するケースもあります。
しかし不思議なことに、C言語で固定小数点を扱うことができるライブラリが普及していません。どうもUNIXシステムベンダは業務プログラムをC言語で真剣に開発する気は無いようです。ベンダからBCD(Binary-coded decimal:二進化十進表現)演算ライブラリ は出てません。(だいたいUNIXの世界、業務バッチ御用達の汎用ソートプログラムすら用意されていません。COBOLの世界に比べUNIXの世界でクライアント・サーバ業務システム、WEB業務システムをC言語で開発するにはあまりにも環境が貧弱なのが現状です。)
C言語開発での二進化十進表現演算(BCD)、自社開発(解決)するしかないようです。