2バイト文字系の文字コード体系
ようやくここから本題です。1バイト系から始まって、JIS漢字コード、JIPSと延々と説明してきたのは、この文字コード体系の説明をするためです。
NEC内部コード
NEC内部コードは、JIPSの仲間です。これも名前の通り、NECの文字コード体系です。
これもJIPSと同じく、JタイプとEタイプの2種類あるみたいですが、Jの方は昔のN5200などのNEC製のパソコンなどで使われていたもの(というかJIS漢字コードをある規則でシフトしたシフトJISの一種)なので省略します。
あと、NECのオフコンは文字コードの扱いが変則的で、文字コードをキー入力するときやCOBOLプログラム上で文字コードを直接指定するときはJIS漢字コード、ハードディスクに保存するときなどはNEC内部コードと扱う場面によって複数の文字コードを使い分けています。
-----------------------------------
NEC内部コードのEの方ですが、我らがNECのオフコンで使われている文字コード体系です。
先に説明したJと区別するときには、NEC内部コード(E)のように、後ろに(E)を付けるみたいです。
この文字コード体系はS100漢字コードとかA−VX内部コードとか、説明書によっていろいろな名前が付けられています。
1バイト文字系は、EBCDIC(先に説明したNECオフコンで使用しているEBCDIC)で表します。
2バイト文字系は、JIPS(E)からさらに変換した形になります。
JIPS(E)もJIPS(J)も、1バイト文字と2バイト文字の区別ができないので、2バイト文字の最初と最後にKI/KOコードを付加してあげなければなりませんでした。
NEC内部コードは、シフトJISのように、JIPS(E)文字コードを区と点に分けて、区を1バイト文字コード(つまりEBCDIC)の空き領域に一定の規則でシフトして、KI/KOコードを不要にしたものです。
シフトJISはJIS8コードの空きに割り当てましたが、NEC内部コード(E)の場合は、「NECオフコンで使用しているEBCDIC文字セット」の空きに割り当てます。空きとして割り当てる箇所がシフトJISよりも多いので、シフトJISより多くの種類の文字コードを使用できることになります。このおかげでJIPSコードのG0文字集合、G1文字集合両方の全ての文字コードを表現できます。
上のEBCDICの文字コード表の緑色の場所が、区をシフトして割り当てている部分です。(シフトJISの同じような表と見比べてください。シフトJISの表よりも緑の場所が多いでしょう?)
上がNEC内部コードのコード表の一部です。区点の並びで表にしてあり、赤字が区点です。青色の行側が文字コードの1バイト目、列側が2バイト目になります。
区点並びのコード表を見れば解るとおり、2回もコード変換(JIS8→EBCDIC変換&シフト)しているので、区点と文字コードの対応/文字の順番はバラバラです。
このように文字の順番がバラバラだと何か問題が起きないというだろうかという疑問もでてきますが、NECのオフコンではこの文字コードはハードディスクなどに保存するときやデータ転送するとき(データ出力時)だけ使われて、文字を処理する(文字をキー入力をする、文字の大小を比較する/文字でソートするような)ときはJIS漢字コードの順番で処理され、うまく問題が起きないようになっています。つまり、NECのオフコンは2種類の文字コードをうまく使い分けているわけです。(なんて面倒な・・・。)
NEC内部コードから、JIS漢字コードへの変換方法ですが、先に説明した逆(シフトを元に戻して、EBCDIC→JIS8変換)をしてもいいのですが、1回で変換できるように変換表が用意されています。
その変換表は、NECオフコンのマニュアル「メッセージ管理3説明書」の「S100漢字からJIS漢字への変換表(区)」と「EBCDICカタカナ符号からJIS8符号への変換表」の2つを使います。一旦JIS漢字コードになってしまえば、さらに他の文字コードに変換するのは簡単ですね。
JIPSのところでも書きましたが、8区、9区、12区、14区、15区(具体的に言うと罫線文字とかですな。)はNECが勝手に拡張しているので、この部分は工夫が必要です。G1文字集合もNEC独自だから、ここも工夫が必要ですね。
NECが勝手に拡張しているってことは、JIS漢字コードにはそんな文字は用意されていないっていうことですから、規則に従って変換しても、そこには文字が無いってことです。
JIPS系の利点である「交互変換時に1バイト文字と2バイト文字を区別しなくて良い」という点と、シフトJISの利点である「KI/KOという印をつけなくても良い」という点、かつシフトJISの「表現できる文字数が少ない」という欠点を解消した、良い所取りの文字コードということです。その代わりに文字コードの順番が区点の順番と異なるという欠点がありますが。
NECのオフコンぐらいしか使用していないとてもマイナーな文字コード体系です。