注意: このページでは tilde を常に「~」と書く。 「~」はオーバーラインではないので注意。 (オーバーラインは「 ̄」と書く)
IBM の CDRA (Character Data Representation Architecture) において, 文字に対する考え方は, 以下のようになっている。
すべての EBCDIC コードページで共通の符号位置を持つ字は以下の 58字である。 ISO646 Invariant のうち, 英小文字と「!」が含まれないことに注意しよう。
| 文字 | SPC | . | < | ( | + | & | * | ) | ; | - | / |
|---|---|---|---|---|---|---|---|---|---|---|---|
| EBCDIC | 40 | 4B | 4C | 4D | 4E | 50 | 5C | 5D | 5E | 60 | 61 |
| 文字 | , | % | _ | > | ? | : | # | @ | ' | = | " |
| EBCDIC | 6B | 6C | 6D | 6E | 6F | 7A | 7B | 7C | 7D | 7E | 7F |
| 文字 | A | B | C | D | E | F | G | H | I | ||
| EBCDIC | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | ||
| 文字 | J | K | L | M | N | O | P | Q | R | ||
| EBCDIC | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | ||
| 文字 | S | T | U | V | W | X | Y | Z | |||
| EBCDIC | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | |||
| 文字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
| EBCDIC | F0 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 |
米国の通常の 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 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | |
| 文字 | j | k | l | m | n | o | p | q | r | |
| EBCDIC | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | |
| 文字 | s | t | u | v | w | x | y | z | ||
| EBCDIC | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | ||
| 文字 | $ | broken bar | ` | ~ | { | } | \ | |||
| EBCDIC | 5B | 6A | 79 | A1 | C0 | D0 | E0 |
以下の 7文字は CCSID ごとに符号位置が異なっている。
| 文字 | ¢ | ¬ | | | ! | ^ | [ | ] | |
|---|---|---|---|---|---|---|---|---|
| CCSID | EBCDIC-US | 4A | 5F | 4F | 5A | -- | -- | -- |
| 00037 | 4A | 5F | 4F | 5A | B0 | BA | BB | |
| 00038 | -- | -- | -- | 4F | 5F | 4A | 5A | |
| 00500 | B0 | BA | BB | 4F | 5F | 4A | 5A | |
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' | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| EBCDIC | 42 | 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' | |
| EBCDIC | 62 | 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 |
| 文字 | << | >> | ± | × | ÷ |  ̄ | ¨ | ´ | μ | ° | £ | ¥ | ・ | § | ||
| EBCDIC | 8A | 8B | 8F | BF | E1 | BC | BD | BE | A0 | 90 | 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 indicator | 9A |
| 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 |
ここでは MBCS 符号化文字集合のみを対象にする。 日本語の場合, DBCS の漢字コードページ(IBM ホスト漢字コード)と SBCS のコードページの 2つを SI/SO で切り替える。
| CCSID | CP | CS | ES | |
|---|---|---|---|---|
| 00930 | SBCS | 00290 | 01172 | 1301 |
| DBCS | 00300 | 01001 | ||
| 00931 | SBCS | 00037 | 00101 | 1301 |
| DBCS | 00300 | 01001 | ||
| 00939 | SBCS | 01027 | 01172 | 1301 |
| DBCS | 00300 | 01001 | ||
| 05026 | SBCS | 00290 | 01172 | 1301 |
| DBCS | 00300 | 00370 | ||
| 05035 | SBCS | 01027 | 01172 | 1301 |
| DBCS | 00300 | 00370 | ||
| 09122 | SBCS | 00290 | 00332 | 1301 |
| DBCS | 00300 | 01001 | ||
| 13218 | SBCS | 00290 | 00332 | 1301 |
| DBCS | 00300 | 00370 | ||
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 があるように書いてあるが, 誤りだろう。)
| 文字 | 。 | 「 | 」 | 、 | ・ | ヲ | ァ | ィ | ゥ | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| EBCDIC | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | |||||||
| 文字 | ェ | ォ | ャ | ュ | ョ | ッ | ー | |||||||||
| EBCDIC | 51 | 52 | 53 | 54 | 55 | 56 | 58 | |||||||||
| 文字 | ア | イ | ウ | エ | オ | カ | キ | ク | ケ | コ | サ | シ | ス | セ | ソ | |
| EBCDIC | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 8A | 8C | 8D | 8E | 8F | 90 | |
| 文字 | タ | チ | ツ | テ | ト | ナ | ニ | ヌ | ネ | ノ | ハ | ヒ | フ | |||
| EBCDIC | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 9A | 9D | 9E | 9F | |||
| 文字 | ヘ | ホ | マ | ミ | ム | メ | モ | ヤ | ユ | ヨ | ラ | リ | ル | |||
| EBCDIC | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | AA | AC | AD | AE | AF | |||
| 文字 | レ | ロ | ワ | ン | ゛ | ゜ | ||||||||||
| EBCDIC | BA | BB | BC | BD | BE | BF |
昔は小文字なしでもすんだのかもしれないが, さすがに不便になったのか, その後 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| EBCDIC | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 71 | 72 | 73 | 74 | 75 |
| 文字 | n | o | p | q | r | s | t | u | v | w | x | y | z |
| EBCDIC | 76 | 77 | 78 | 8B | 9B | AB | B3 | B4 | B5 | B6 | B7 | B8 | B9 |
| 文字 | [ | ] | ~ | ^ | ¢ | \ | { | } | |||||
| EBCDIC | 70 | 80 | A0 | B0 | B1 | B2 | C0 | D0 |
CCSID 00930 の SBCS 用 CP は, こちらの新しい 00290 を使っている。
もうひとつ, CCSID 00939 の SBCS 部分として使われている CP 01027 というのもある。 こちらは CP 00290 とちょうど逆の方法をとっている。 つまり EBCDIC-US の上位互換で(ただし BROKEN BAR はない), 空き領域に下のようにカタカナを追加したものである。
| 文字 | 。 | 「 | 」 | 、 | ・ | ヲ | ァ | ィ | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| EBCDIC | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | |||||
| 文字 | ゥ | ェ | ォ | ャ | ュ | ョ | ッ | ー | ア | ||||
| EBCDIC | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | ||||
| 文字 | イ | ウ | エ | オ | カ | キ | ク | ケ | コ | ||||
| EBCDIC | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | ||||
| 文字 | サ | シ | ス | セ | ソ | タ | チ | ツ | |||||
| EBCDIC | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | |||||
| 文字 | テ | ト | ナ | ニ | ヌ | ネ | ノ | ハ | ヒ | フ | ヘ | ホ | |
| EBCDIC | 8A | 8B | 8C | 8D | 8E | 8F | 9A | 9B | 9C | 9D | 9E | 9F | |
| 文字 | マ | ミ | ム | メ | モ | ヤ | ユ | ヨ | ラ | リ | ル | レ | |
| EBCDIC | AA | AB | AC | AE | AF | B3 | B4 | B5 | B6 | B7 | B8 | B9 | |
| 文字 | ロ | ワ | ン | ゛ | ゜ | ||||||||
| EBCDIC | BA | BB | BC | BE | BF | ||||||||
| 文字 | £ | ¥ |  ̄ | ^ | [ | ] | |||||||
| EBCDIC | B1 | B2 | A0 | B0 | AD | BD |
「£・¥・^」 の 3字は CP 00037 と同じところに追加している。 「[・]」がこんなとっぱなれに置かれている理由は不明。
CP 00290 と CP 01027 は, 符号位置を別にすれば図形文字としてはまったく同じレパートリーを持つ。 しかし当然 CP 00290 でカタカナを使うと, CP 01027 では文字化けしてしまう。 AS400 のクライアントアクセスのメニューは CCSID 00930 (=00290) を前提にしているらしく, 5250 表示装置エミュレーションで CCSID 00939 (=01027)に設定してログインすると, 「フ゜ロンフ゜ト」が「ホ゜ワ]ホ゜n」に, 「コマント゛」が「テu]n゛」に, 「メニュー」が「xpャー」に それぞれ化けてしまう。
IBM PC の日本語コードページは伝統的には 932 だが, これは EBCDIC 日本語文字集合の SBCS 部分の要素のうち 「£・¢・¬・\」および 「~(tilde)」 の 5字を含まない。 そこでこれらの文字を追加したコードページ 942 を IBM は定義している。 具体的には下のように追加している。
| 文字 | ¢ | £ | ¬ | \ | tilde |
|---|---|---|---|---|---|
| Code | 80 | A0 | FD | FE | FF |
| CCSID | CP | CS | ES | |
|---|---|---|---|---|
| 00932 | SBCS | 00897 | 01192 | 2300 |
| DBCS | 00301 | 00370 | ||
| 00942 | SBCS | 01041 | 01172 | 2300 |
| DBCS | 00301 | 00370 | ||
CCSID 00942 は GCSGID の値が CCSID 5026/5030 と完全に同じなので, 一対一の変換が可能である。