溜池界隈で働いていた頃のこと。IBM汎用機上でCOBOLやREXXでツールをちまちまと作っていましたが、データベースの仕様書を自動的に作成したいという話が出てきました。
最終的にExcel形式であればよいとのことで、汎用機側でテーブル定義のエクスポートデータを作成し、PCにインポートしたデータをExcelに読ませようという方針であった。手作業が多いのは嫌なので「汎用機から直接データを引っ張れたらラクだよな」と思いつつ、ダメ元でデータベースチームに相談したところ「運用側で定義さえすればアクセス可能だよ」とのこと。言ってみるものである。
ただし、直接貼るだけではない。例えばコードが 1 なら Integer などの変更くらいは想定していた。が、定義表をいくつかまとめて印刷したり、間に注釈の紙を入れてもそのページ数分飛ばしたページ番号をしたい、などと注文の多い料理店状態になってきまして、処理を簡素化するために取込んだデータをいったん Access に突っ込んで処理することにしました。
ここで問題発生。
汎用機から引っ張ってきた際に order by 句を書いていたのだが、いったん Access に突っ込んで同じ order by 句で取得すると並び順が違うことがありました。
片や EBCDEC、片や SHIFT-JIS。前者は数字よりアルファベットが小さいと判断しますが、後者は逆になっていまいます。
文字コードが違うとこういう部分で苦労することがあります。
で、どうやったかって?そりゃ、ソート順を汎用機側に合わせるため小細工をして乗り切りました。