SQL Server でアプリの結果を検証するため、Viewと関数とで検証プログラムのようなものを作っている。
金額の計算をしているのだが、割引率をfloat型で持たせている。その掛け率を使うと、希に計算結果が1円ずれる事があった。例えば 10000 に 0.85 を掛け、1円単位になるよう切り捨てると 8500 ではなく 8499になったり・・である。おそらく、内部的に 0.8499999999999などで持っているのだろう。

結局、文字型に変え、整数を掛けた後に桁数を合わせる割り算をした。例えば 0.85 の場合。0.85は 85 ÷ 100 と表現できるので、その形に変換する。ただし、いったん 0.85 を数字から文字に変換し、確実に 0.85 と認識させた上で行う、とした。
他、いろいろ試したが、これが一番確実であった。


そもそも floatで持つのが間違いなのかも知れないが、パッケージソフト上そう持っているのでやむを得ない・・。
まあ、これで狂わずに計算できる運びとなった。
7月は客先のサーバー故障が続いた。どちらも結構遠い客先なので、出かけると一日がかり。

一台は「朝来たらサーバーが落ちていた。電源を入れても起動しない」ってことで現地へ。
ほこりっぽいので中を掃除しコンセントを接続するタップの口を変えて電源を入れると起動した。で、ちゃんとシステムも動くのでと確認頂いて帰途に着くが、その1時間後に電話があり「またダメ」ってことで「こりゃ電源ユニットの問題ちゃうの?」とH/Wメーカーに連絡した。
翌営業日、サーバーの保守の範囲内で修理完了。電源ユニット交換でビンゴであった。


もう一台は「毎日サーバーを落として返っているが、今朝はなんかセーフモードとかになるみたい」という事で、電話対応だけでは復旧しなかったので現地へ。
確かに、こりゃどうやっても起動しない。この症状だとHDDかRAIDコントローラーかな?業務が停まるとまずいので、あるPCをサーバー替わりにして環境構築とソフトのインストールを実施し、H/Wメーカーに連絡。
翌営業日、ハーバーの保守の範囲で修理完了。HDDがダメらしく、OSからの再インストールはこちらで実施・・。購入時点ではインストール済みだったのに・・。再インストール作業にもう一回現地作業を実施した。


こちらではシステムのソフトウェアを入れており、障害がソフトかハードかの切り分けは本来は客側であるが、客にしてみればソフトだろうがハードだろうが知ったこっちゃないに違いない。動かないものは動かないんだから。
まあ、その辺は日本ではきっちりと線引きをしにくいところで致し方ない部分だろう。


なお、該当H/Wは両方とも同じメーカーであった。こういう事を書くと失礼だとは思うが、元はパソコンメーカーなので弱いのか?と勘ぐりたくなったりもする。ハードウェアメーカーによる故障率なんてもの、メーカーは当然数字を出さないだろうけれど、ここいらの情報は集められるだろうか?
昔のDelphiから、Canvasというのがあり、そこに線やら多角形やら円やらが描けるような記憶がある。(1990年代の中頃に本で読んだだけなので・・Delphi 1 の頃だったかと)

FireMonkeyにもCanvasがある。しかし、大きな勘違いをしていたようだ。

フォーム上にあるものはすべて「オブジェクトとして認識できる」ものと思っていたが、どうやらCanvasで描いたものは「図形を描く」だけのもので、描いたひとつひとつをオブジェクトとして認識できないようなのだ。

これでは企んでいる事ができない。Canvasを使わない方法を考えなくては・・・。