IBM EBCDIC 日本語符号化文字集合

注意: このページでは tilde を常に「~」と書く。 「~」はオーバーラインではないので注意。 (オーバーラインは「 ̄」と書く)

目次


概要

IBM の CDRA (Character Data Representation Architecture) において, 文字に対する考え方は, 以下のようになっている。

GCGID (Graphic Character Global Identifier)
図形文字を識別するための番号。 たとえば「¥」は SC050000, 「\」は SM070000, 「ア」は JA000000 といった具合である。
GCSGID (Graphic Character Set Global Identifer)
CS とも呼ぶ。 GCGID によって識別される文字の(符号化されていない)集合を識別するための 5桁の10進数。
エンコーディング方法(Encoding Schemes)
コードページの符号化形式。 略して ES とも呼ぶ。 EBCDIC/IBMPC/ISO7/ISO8/ISO2022/EUC/UCS2, SBCS/DBCS/MBCS, SI/SO拡張など。 Encoding Scheme ID によって識別される。
CPGID (Code Page Global Identifer)
Code Page は, 図形文字集合の各要素それぞれに符号位置を割り当てたもの。 Code Page を識別するための 5桁の数字を CPGID(CP とも)と呼ぶ。 ただし CPGID は同じでも GCSGID が異なる場合もある。
CCSID (Coded Character Set Identifier)
1つ以上のコードページを組み合わせた符号化文字集合を識別する, やはり 5桁の数字。 たとえば日本の「EBCDIC日本語英数カナ」の CCSID は 930 であり, これは「EBCDIC英数カナ」のコードページ(290)と「日本語(漢字)」のコードページ(300) を SI/SO で切り替える(Encoding Scheme = 1301)ものである。

すべての EBCDIC コードページで共通の符号位置を持つ字は以下の 58字である。 ISO646 Invariant のうち, 英小文字と「!」が含まれないことに注意しよう。

文字 SPC.<(+&*);-/
EBCDIC404B4C4D4E505C5D5E6061
文字 ,%_>?:#@'="
EBCDIC6B6C6D6E6F7A7B7C7D7E7F
文字 A B C D E F G H I
EBCDIC C1C2C3C4C5C6C7C8C9
文字 J K L M N O P Q R
EBCDIC D1D2D3D4D5D6D7D8D9
文字 S T U V W X Y Z
EBCDIC E2E3E4E5E6E7E8E9
文字 0 1 2 3 4 5 6 7 8 9
EBCDICF0F1F2F3F4F5F6F7F8F9

米国用 EBCDIC CCSID

米国の通常の EBCDIC CCSID には以下のものがある:

CCSID CP CS ES CodePage Name RFC1345 charset name
(??) (??) (??) (??) (??) EBCDIC-US
00037 00037 00697 1100 (EBCDIC)USA/Canada IBM037
00038 (??) (??) (??) (??) IBM038
00500 00500 00697 1100 (EBCDIC)Multilingual #5 --

このほかに CP 00256 は一応 "International #1" と書いてあるが, オランダ語用らしいのでここには含まない。 内容は CCSID 00500 の一部の文字を差し替えたもの。

以上のコードページは, 共通の 58文字に加えて, 以下の 33文字を共有する。

文字 a b c d e f g h i
EBCDIC 818283848586878889
文字 j k l m n o p q r
EBCDIC 919293949596979899
文字 s t u v w x y z
EBCDIC A2A3A4A5A6A7A8A9
文字 $ broken bar` ~ { }
EBCDIC5B 6A 79A1C0D0E0

以下の 7文字は CCSID ごとに符号位置が異なっている。

文字 ¢¬| ! ^ [ ]
CCSID EBCDIC-US 4A5F4F5A------
00037 4A5F4F5AB0BABB
00038 ------4F5F4A5A
00500 B0BABB4F5F4A5A

CCSID 00037 と 00500 は, 上記に加えて Latin-1 のすべての文字を含むように 93字が追加されている。 すなわち,

ということになる。 したがって, 00037 と 00500 は文字の並びが違うだけで GCSGID は等しい。

追加 93文字は以下のとおりである。 EBCDIC の図形文字用領域は 40 から FE までの 195 文字(スペースを含む)であり, これは Latin-1 の図形文字(スペースを含む)の数に等しい。 したがって, 00037, 00500 の内容は Latin-1 と同じで, 空きはない。

文字 a^ a" a` a' a~ aa ae e^ e" e` e' i^ i" i` i'
EBCDIC42 43 44 45 46 47 9C 52 53 54 51 56 57 58 55
文字 A^ A" A` A' A~ AA AE E^ E" E` E' I^ I" I` I'
EBCDIC62 63 64 65 66 67 9E 72 73 74 71 76 77 78 75
文字 o^ o" o` o' o~ o/ u^ u" u` u' c, n~ dh y' th β
EBCDIC CB CC CD CE CF 80 DB DC DD DE 48 49 8C 8D 8E 59
文字 O^ O" O` O' O~ O/ U^ U" U` U' C, N~ DH Y' TH y"
EBCDIC EB EC ED EE EF 90 FB FC FD FE 68 69 AC AD AE DF
文字 <<>>±×÷¨´μ° £ §
EBCDIC8A 8B 8FBFE1BCBDBEA090 B1 B2 B3 B5
文字 EBCDIC
no-break space 41
soft hyphen CA
inverted exclamation mark AA
inverted question mark AB
currency sign 9F
registered sign AF
copyright sign B4
cedilla 9D
feminine ordinal indicator9A
masculine ordinal indicator 9B
pilcrow sign B6
vulgar fraction one quarter B7
vulgar fraction one half B8
vulgar fraction three quarters B9
superscript one DA
superscript two EA
superscript three FA

日本用 EBCDIC CCSID

ここでは MBCS 符号化文字集合のみを対象にする。 日本語の場合, DBCS の漢字コードページ(IBM ホスト漢字コード)と SBCS のコードページの 2つを SI/SO で切り替える。

CCSID CP CS ES
00930 SBCS 00290011721301
DBCS 0030001001
00931 SBCS 00037001011301
DBCS 0030001001
00939 SBCS 01027011721301
DBCS 0030001001
05026 SBCS 00290011721301
DBCS 0030000370
05035 SBCS 01027011721301
DBCS 0030000370
09122 SBCS 00290003321301
DBCS 0030001001
13218 SBCS 00290003321301
DBCS 0030000370

CCSID 00930/00939/09122 と 05026/05035/13218 の差はユーザー定義文字の数だけのようである。 (00930/00939/09122 は 4370 字, 05026/05035/13218 は 1880字)

CCSID 00930 と 09122 の違いは, SBCS に英小文字を含むかどうかの差である。 09122 は含まない。

ほかにも PC 互換用とか HP 互換用とか, 日立の EBCDIK (CP 00290 に似ているが記号の配列が少し違う) とかがあるが省略する。

文献にあげた International Application Development には 00930, 00939, 05026, 05035 の 4 CCSID のみをあげている。 Java の AS400Text クラスもこの 4つの CCSID のみを取り扱うことができる。

CP CodePage Name RFC1345 charset name
00281 (EBCDIC)Japan(Latin) IBM281, EBCDIC-JP-E
00290 (EBCDIC)Japan(Katakana)IBM290, EBCDIC-JP-kana
01027 (EBCDIC)Japanese(Latin)Extended --

CDRA では CP 00281 は扱っていないようだが, ほかのコードを理解するために必要なのでまずこれから説明する。

CP 00281 は米国 CCSID の項目であげた EBCDIC-US と非常によく似ているが, 記号の一部が以下のように入れ替わっている。 あとは EBCDIC-US の項を参照のこと。 (なお, 文献にあげた International Application Development の CP 00281 の図には, この他に Latin-1 の文字も定義されているが省略。)

コード 4A 5B A1 E0
EBCDIC-US ¢ $ ~
00281 £ $

CP 00290 は, CP 00281 の英小文字のかわりに下のようにカタカナを加えたもの。 なお, CP 00281 にある記号のうち, 「{」 と 「}」 と BROKEN BAR の 3字は CP 00290 には存在しない。 (RFC1345 には BROKEN BAR があるように書いてあるが, 誤りだろう。)

文字
EBCDIC414243444546474849
文字
EBCDIC515253545556 58
文字
EBCDIC8182838485868788898A 8C8D8E8F90
文字
EBCDIC9192939495969798999A 9D9E9F
文字
EBCDIC A2A3A4A5A6A7A8A9AA ACADAEAF
文字
EBCDICBABBBCBDBEBF

昔は小文字なしでもすんだのかもしれないが, さすがに不便になったのか, その後 CP 00290 の空き領域に英小文字をはじめとして EBCDIC-US や ASCII にあるすべての文字(BROKEN BAR 以外)を追加しなおした。 このときコードページ番号が 00290 のままだったこと, 追加した英小文字ともとの EBCDIC-US/00037/00281 にあった英小文字の符号位置が (当然ながら) まったく異なっていたことが原因で, いろいろと文字化けがおきることになった。 たとえば EBCDIC-US や CP 00037 で「home」と書いたものを CP 00290 で読むと「クナテオ」に化けてしまう。 CP 00290 の英小文字は以下のように配置されている。

文字 a b c d e f g h i j k l m
EBCDIC62636465666768697172737475
文字 n o p q r s t u v w x y z
EBCDIC7677788B9BABB3B4B5B6B7B8B9
文字 [ ] ~ ^ ¢{ }
EBCDIC7080A0B0B1B2C0D0

CCSID 00930 の SBCS 用 CP は, こちらの新しい 00290 を使っている。

もうひとつ, CCSID 00939 の SBCS 部分として使われている CP 01027 というのもある。 こちらは CP 00290 とちょうど逆の方法をとっている。 つまり EBCDIC-US の上位互換で(ただし BROKEN BAR はない), 空き領域に下のようにカタカナを追加したものである。

文字
EBCDIC 4243444546474849
文字
EBCDIC515253545556575859
文字
EBCDIC 626364656667686970
文字
EBCDIC7172737475767778
文字
EBCDIC8A8B8C8D8E8F9A9B9C9D9E9F
文字
EBCDICAAABAC AEAFB3B4B5B6B7B8B9
文字
EBCDICBABBBC BEBF
文字 £ ^ [ ]
EBCDICB1 B2 A0 B0ADBD

「£・¥・^」 の 3字は CP 00037 と同じところに追加している。 「[・]」がこんなとっぱなれに置かれている理由は不明。

CP 00290 と CP 01027 は, 符号位置を別にすれば図形文字としてはまったく同じレパートリーを持つ。 しかし当然 CP 00290 でカタカナを使うと, CP 01027 では文字化けしてしまう。 AS400 のクライアントアクセスのメニューは CCSID 00930 (=00290) を前提にしているらしく, 5250 表示装置エミュレーションで CCSID 00939 (=01027)に設定してログインすると, 「フ゜ロンフ゜ト」が「ホ゜ワ]ホ゜n」に, 「コマント゛」が「テu]n゛」に, 「メニュー」が「xpャー」に それぞれ化けてしまう。

日本の PC 用 CCSID

IBM PC の日本語コードページは伝統的には 932 だが, これは EBCDIC 日本語文字集合の SBCS 部分の要素のうち 「£・¢・¬・\」および 「~(tilde)」 の 5字を含まない。 そこでこれらの文字を追加したコードページ 942 を IBM は定義している。 具体的には下のように追加している。

文字¢£¬tilde
Code80A0FDFEFF
CCSID CP CS ES
00932 SBCS00897011922300
DBCS0030100370
00942 SBCS01041011722300
DBCS0030100370

CCSID 00942 は GCSGID の値が CCSID 5026/5030 と完全に同じなので, 一対一の変換が可能である。


参考文献

  1. IBM Character Data Representation Architecture Reference and Registry (SC09-2190-00), Second Edition. 1995.
  2. IBM AS/400 International Application Development, Version 3 (SC41-4603-00), First Edition. 1996.
  3. Ken Lunde, Understanding Japanese Information Processing, First Edition. O'Reilly & Associates, 1993.
  4. IBM 漢字コード一覧表, 第4版. 1987.
  5. K. Simonsen & Rationel Almen Planlaegning, Character Mnemonics & Character Sets (RFC1345), 1992.

文字コードの話に戻る