2010/06/25

数字<英字 とは限りません。

オープン系開発者は、文字コードのベースが ASCIIコードの人が多いので、無意識の内に数字<英字と反応するようです。暗黙知になっている人もいます。
'0'<'9'<'A'<'a' です。
でも、汎用機で使われている EBCDICコードでは '英字'<'数字'です。 'A'<'0'です。
これが小さな騒動になったりするので、暗黙知に差があると怖い。
商品コード順のリストなどで、コードが英数字で構成されているとき、ソート結果の順序が、汎用機での出力結果と、Open系での結果や、Excelでのソート結果では、並び順が異なります。
互いの事情を知らない人が互いに「バグだ修正しろ」と争いになることが、時々あります。最近は聞かなかったのですが、汎用機開発をしている人と話をしていると、最近でも有るそうです。
エンドユーザーにとって、並び順は重要なので、処理系が異なって順が変わるのは、処理機械の勝手であって、ユーザーには無関係です。
アウトソーシングで汎用機システムをオープン系に載せ換えたとき、英字<数字になるように、カスタムソートで 処理したようです。
Oraclと MS Sqlの nullのソート順も違いますね。
コード体系がいろいろあるのは構いませんが、文字種の大小関係は統一して欲しかったなぁ。
ASCII,EUC,JIS....は根がasciiだから文字種大小は同じなのでしょうね。
カナ拡張EBCDICはもっと悲惨で
 'テ' < 'a' <'i' <'ト' < 'ハ' <'j' <'ル' <'A' <'0'
となっています。英字、カナ混じりのコードの表はどのように処理しているのだろうか。
私が汎用機をしていた頃は、混合項目は作らなかったので、問題化しませんでしたが、今もそうなのかな。
EBCDICコード系をみる度に、「策定者は(将来のことを)深く考えなかった。」と思えてしかたがありません。

0 件のコメント:

コメントを投稿