2000年対応のプロジェクトで銀座の外れで仕事をし始めてまもなくの頃。

COBOLソースでヤバそうな箇所をコンパイルリストを見ながらチェックするようにとの指示だった。蛍光ペン必須。




COBOLはデータ定義する部分と処理を記述する部分が分かれている。行番号も付加されており、コンパイルオプションにもよるのだが、変数定義部には処理で使われている行番号が、処理には使われている変数の定義行番号が、それぞれ行の右側に羅列される。


コンパイルリストをPCにエクスポートし、この行番号を利用してVBAで2000年問題の対処候補を絞り込めるだろうと提案し実装した。処理さえ出来てしまえば簡単である。あとは帰りに実行しておけば朝には怪しい箇所にチェックを付けたリストが保存される。




しばらくそれで行っていたが、ある時「なんかこれ、引っかかってきてないんだけれど」という指摘を受けた。


データを分解し、行をソートしてマッチング処理なんかをしていたのだが、ソート順が「文字順」になっていたのだ。




どういうことかというと、11 と 2 ならどちらが大きい?と判定させた場合、数字順なら 2 だが、文字順だと 11 が小さいと判断されてしまうのだ。行番号を利用して「数字順」に並んだという前提で処理をしていたため、いわゆる順ファイルのマッチング処理で網羅できなかったのだ。セルの設定で何とでもなるみたいだが、当時はミスってしまった。




Excelでソートをかける際、そういう落とし穴にはまらないようご注意を。




東洋経済「2006 9/30 特大号」の特集が「内部統制虎の巻」です。







そのP56に「IT対応で重要なのは(以下略)」・・。うん。その通りです。




そうなると頭が痛いのが、お客さん先に入れたのがExcel+Databaseのシステムで、業務基幹システムであります。これを日本版SOX法対応に対応しないといけなくなると結構大がかりな修正だな、と敵前逃亡したくなる今日この頃です。




溜池界隈でのツール、ソートの後にまた問題がありました。リリース後です。







ネットワークで会社間をつなぎ、それぞれの会社を拠点と呼んでいました。その拠点に配布するのには汎用機上に配布ライブラリを作って取り込んでもらいます。







さて、取り込んでもらったところ、数社で「エラーが出る」とのこと。こちらでは再現しないので現地へ赴きました。







現地では確かに動きませんでした。Officeのバージョンが拠点間で統一されている訳ではないのでDAOのバージョンが違うため参照できないのでは?と、「参照設定」を確認したところ、やはりうまく参照されていませんでした。







ただ、なぜか「ごみ箱」内のモジュールを参照しようとしていたのかはナゾであります。