# EBCDIC

**EBCDIC** (英語: Extended Binary Coded Decimal Interchange Code、エビシディック、拡張二進化十進コード) はIBMにより定義された8ビットのコード化文字セットである。ASCII普及前の1963年に、**BCD**(Binary-coded decimal、二進化十進コード)を拡張する形で作られ、主にIBM系のメインフレームやオフィスコンピュータなどで使用されている。

IBMのCDRA（*Character Data Representation Architecture*; 文字データ表現体系）では、EBCDICは符号化方法（Encoding Scheme）の1つと位置づけられている。各国語などの文字集合であるコードページを、EBCDICなどの符号化方式で符号化するが、EBCDICの符号化にもシングルバイト、ダブルバイト、マルチバイトの構造がある。これらの組み合わせがCCSIDとして定義されており、例えば日本用のEBCDICのCCSIDは、ひらがなや漢字を含まない組み合わせも含めると、10以上定義されている。

この他、IBM以外の互換メーカーなどのEBCDICをベースとした各種の文字コードまたは符号化方法も、EBCDICまたはEBCDIC系と呼ばれる場合がある。

## 歴史

EBCDICはSystem/360と同時に発表された。

IBMはASCII標準化委員会の主提案社であったが、BCDをベースとしたのは、当時のデータの大多数はパンチカードの形でBCDの形式で保管されていたため、蓄積データの互換性を優先したためである。

System/360がベストセラーとなると、そのクローンであるRCA Spectra、ICL System 4、富士通 FACOM、日立製作所 HITACなどもEBCDICを採用した。

EBCDICを標準の文字コードとするオペレーティングシステムには、IBMメインフレーム用のz/OS、z/VSE、z/VMや、IBMミッドレンジコンピュータ用のOS/400、IBM iなどがある。ただし、IBMメインフレーム上でもz/OS上のUSS(UNIX互換環境)や、Linux、あるいはAS/400やPower Systems i Edition上で稼動するLinuxやAIXなどは、ASCIIである。EBCDICと、ASCII、シフトJIS、Unicodeなどの主要な文字コード間は、オペレーティングシステム、ミドルウェア、各種ツール、アプリケーション・ソフトウェアなどの機能を使用したコード変換が行われている。

IBM以外ではBS2000、HP MPE、Unisys MCPなどもEBCDICをベースにしている。日立製作所はEBCDICをベースとした自社の文字コードを**EBCDIK**と呼んでいる。上述のようにIBMの日本用EBCDICの組み合わせ(CCSID)は10以上定義されているが、他メーカーでは細部が異なるため、いわゆるEBCDIC系統では多数の文字コードが存在している。

## 詳細

### CCSID、コードページとの関係

上述のように、IBM CDRA上ではEBCDICは「文字コード」ではなく「符号化方法」の1つであり、具体的なコード配置（各文字と符号位置の配置）はコードページによっても異なる。符号化方法にEBCDIC (1100)を使用したコードページとCCSIDの例には以下がある。なお CCSID 5026（日本語カタカナ拡張）にはコードページが2つあり（混合CCSID）、切り替えて使用する。

EBCDICを使用したCCSID、コードページの例| CCSID | コードページ(CPGID) | 符号化方法(ES) | コードページ名 | 備考 |
| --- | --- | --- | --- | --- |
| 37 | 37 | 1100 | USA/Canada - CECP | USA英語(EBCDIC) |
| 500 | 500 | 1100 | International #5 | 多国語英語(EBCDIC) |
| 5026/930/1390 | 290 | 1100 | Japanese (Katakana) Extended | SBCS日本語カナ(EBCDIC) |
| 300 | 1100 | Japan (Kanji) - Host, DBCS | DBCS日本語(EBCDIC) |
| 5035/939/1399 | 01027 | 1100 | Japanese (Latin) Extended | SBCS日本語英小文字カナ(EBCDIC) |
| 300 | 1100 | Japan (Kanji) - Host, DBCS | DBCS日本語(EBCDIC) |

### コード配置

* EBCDICを使用した全てのコードページで、共通の符号位置を持つ文字 (例えば、'SP'(ブランク) = X'40'は共通だが、以下に記載の無い英小文字の有無や位置はコードページにより異なる）

|   | 00 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | A0 | B0 | C0 | D0 | E0 | F0 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 0 |   |   |   |   | sp | & | - |   |   |   |   |   |   |   |   | 0 |
| 1 |   |   |   |   |   |   | / |   |   |   |   |   | A | J |   | 1 |
| 2 |   |   |   |   |   |   |   |   |   |   |   |   | B | K | S | 2 |
| 3 |   |   |   |   |   |   |   |   |   |   |   |   | C | L | T | 3 |
| 4 |   |   |   |   |   |   |   |   |   |   |   |   | D | M | U | 4 |
| 5 |   |   |   |   |   |   |   |   |   |   |   |   | E | N | V | 5 |
| 6 |   |   |   |   |   |   |   |   |   |   |   |   | F | O | W | 6 |
| 7 |   |   |   |   |   |   |   |   |   |   |   |   | G | P | X | 7 |
| 8 |   |   |   |   |   |   |   |   |   |   |   |   | H | Q | Y | 8 |
| 9 |   |   |   |   |   |   |   |   |   |   |   |   | I | R | Z | 9 |
| A |   |   |   |   |   |   |   | : |   |   |   |   |   |   |   |   |
| B |   |   |   |   | . |   | , | # |   |   |   |   |   |   |   |   |
| C |   |   |   |   | < | \* | % | @ |   |   |   |   |   |   |   |   |
| D |   |   |   |   | ( | ) | \_ | ' |   |   |   |   |   |   |   |   |
| E |   |   |   |   | + | ; | > | = |   |   |   |   |   |   |   |   |
| F |   |   |   |   |   |   | ? | " |   |   |   |   |   |   |   |   |

* カナ拡張されたEBCDICコードの例(IBMによるカナ拡張の一例;コードページ:298の場合)

|   | 00 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | A0 | B0 | C0 | D0 | E0 | F0 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 0 |   |   |   |   | sp | & | - | コ | テ | ハ | ム | リ | { | } | ¥ | 0 |
| 1 |   |   |   |   |   | ゥ | / | サ | a | j | ～ | ル | A | J |   | 1 |
| 2 |   |   |   |   | 。 | ェ | イ | シ | b | k | s | レ | B | K | S | 2 |
| 3 |   |   |   |   | 「 | ォ | ウ | ス | c | l | t | ロ | C | L | T | 3 |
| 4 |   |   |   |   | 」 | ャ | エ | セ | d | m | u | ワ | D | M | U | 4 |
| 5 |   |   |   |   | 、 | ュ | オ | ソ | e | n | v | ン | E | N | V | 5 |
| 6 |   |   |   |   | ・ | ョ | カ | タ | f | o | w | ゛ | F | O | W | 6 |
| 7 |   |   |   |   | ヲ | ッ | キ | チ | g | p | x | ゜ | G | P | X | 7 |
| 8 |   |   |   |   | ァ | ー | ク | ツ | h | q | y |   | H | Q | Y | 8 |
| 9 |   |   |   |   | ィ | ア | ケ | ｀ | i | r | z |   | I | R | Z | 9 |
| A |   |   |   |   | ¢ | ! | ¦ | : | ト | ヒ | メ |   |   |   |   |   |
| B |   |   |   |   | . | $ | , | # | ナ | フ | モ |   |   |   |   |   |
| C |   |   |   |   | < | \* | % | @ | ニ | ヘ | ヤ |   |   |   |   |   |
| D |   |   |   |   | ( | ) | \_ | ' | ヌ | ホ | ユ |   |   |   |   |   |
| E |   |   |   |   | + | ; | > | = | ネ | マ | ヨ |   |   |   |   |   |
| F |   |   |   |   | │ | ￢ | ? | " | ノ | ミ | ラ |   |   |   |   |   |

### 制御文字コードの配置

EBCDICにもASCIIと同様、通信処理の制御や周辺機器の制御などの目的に用いる文字コードが存在する。割り当て範囲は、16進数表現の00hから3Fhの間と0FFh。

* IBMによるカナ拡張の一例（コードページ:298)と組み合わせた場合のコード表

|   | 00 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | A0 | B0 | C0 | D0 | E0 | F0 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 0 | NUL | DLE | DS | （予約） | sp | & | - | コ | テ | ハ | ム | リ | { | } | ¥ | 0 |
| 1 | SOH | DC1 | SOS | （予約） |   | ゥ | / | サ | a | j | ～ | ル | A | J |   | 1 |
| 2 | STX | DC2 | FS | SYN | 。 | ェ | イ | シ | b | k | s | レ | B | K | S | 2 |
| 3 | ETX | DC3 | WUS | IR | 「 | ォ | ウ | ス | c | l | t | ロ | C | L | T | 3 |
| 4 | SEL | RES/ENP | BYP/INP | PP | 」 | ャ | エ | セ | d | m | u | ワ | D | M | U | 4 |
| 5 | HT | NL | LF | TRN | 、 | ュ | オ | ソ | e | n | v | ン | E | N | V | 5 |
| 6 | RNL | BS | ETB | NBS | ・ | ョ | カ | タ | f | o | w | ゛ | F | O | W | 6 |
| 7 | DEL | POC | ESC | EOT | ヲ | ッ | キ | チ | g | p | x | ゜ | G | P | X | 7 |
| 8 | GE | CAN | SA | SBS | ァ | ー | ク | ツ | h | q | y |   | H | Q | Y | 8 |
| 9 | SPS | EM | SFE | IT | ィ | ア | ケ | ｀ | i | r | z |   | I | R | Z | 9 |
| A | RPT | UBS | SM/SW | RFF | ¢ | ! | ¦ | : | ト | ヒ | メ |   |   |   |   |   |
| B | VT | CU1 | CSP | CU3 | . | $ | , | # | ナ | フ | モ |   |   |   |   |   |
| C | FF | IFS | MFA | DC4 | < | \* | % | @ | ニ | ヘ | ヤ |   |   |   |   |   |
| D | CR | IGS | ENQ | NAK | ( | ) | \_ | ' | ヌ | ホ | ユ |   |   |   |   |   |
| E | SO/LS1 | IRS | ACK | （予約） | + | ; | > | = | ネ | マ | ヨ |   |   |   |   |   |
| F | SI/LS0 | IUS/ITB | BEL | SUB | │ | ￢ | ? | " | ノ | ミ | ラ |   |   |   |   | EO |

ASCIIと共通の機能名称を持つ制御文字コードがある反面、プリンタ等の基本的な改行制御に関わる制御文字コードの個数に差異があるといった違いもある。

* EBCDIC：CR=Carriage Return、NL=New Line、LF=Line Feed、FF=Form Feed（計4種類）
* ASCII：CR=Carriage Return、LF=Line Feed、FF=Form Feed（計3種類）

* J.DONOVAN, JOHN (1972). *systems programming*. ISBN 0-07-085175-1

* “IBM Globalization - Resources”.  IBM Corporation (2017年3月17日). 2018年10月31日時点のオリジナルよりアーカイブ。2019年8月23日閲覧。 - IBMの文字コード全体の資料と、EBCDICを含む各文字コードのコード表
	+ “IBM Globalization - Character set identifiers - GCSGID 01172”.  IBM Corporation (2016年11月3日). 2017年6月10日時点のオリジナルよりアーカイブ。2019年8月23日閲覧。 - コードページ 1172（日本語拡張，EBCDIC/汎用PC）
* 益山 (1998年6月14日). “IBM EBCDIC 日本語符号化文字集合”. 2011年12月20日時点のオリジナルよりアーカイブ。2019年8月23日閲覧。
* SJIS(IBM943)、EBCDIC(IBM930)の文字コードMAPについて (リンク先に日本語コード一覧表)