EBCDIC(Extended Binary Coded Decimal Interchange Code、拡張二進化十進コード)は、
IBMによって開発された
8ビットの
文字コードです。
ASCIIが普及する前の1963年に、既存のBCD(Binary-coded decimal、二進化十進コード)を拡張する形で誕生しました。そのため、
ASCIIとは互換性がありません。
EBCDICは、特に
IBMの
メインフレームや
オフィスコンピュータで広く使用されてきました。現在でも、レガシーシステムや特定の専門分野ではEBCDICが使用されている場合があります。しかし、現代のシステムでは、
ASCIIや
Unicodeといった他の
文字コードが主流となっています。
EBCDICの歴史と普及
EBCDICは、
IBM System/360の登場と同時に発表されました。
IBMは
ASCII標準化委員会にも参加していましたが、当時のデータの大部分はパンチカードにBCD形式で保存されていたため、既存データとの互換性を重視し、BCDをベースとしたEBCDICを採用したのです。
System/360の成功はEBCDICの普及を加速させました。多くの
IBM互換機メーカーもEBCDICを採用し、
RCA Spectra、ICL System 4、
富士通 FACOM、
日立製作所 HITACといった機種で利用されました。
日立製作所は独自のEBCDICをベースとした
文字コード「EBCDIK」を開発しました。
現在でも、
IBMのz/OS、z/VSE、z/VMといった
メインフレーム用OSや、
IBM iシリーズのOS/400などではEBCDICが標準の
文字コードとして使用されています。しかし、これらのシステム上でも、UNIX互換環境(USS)や
Linux、AIXなど、
ASCIIや
Unicodeを使用する環境も存在します。そのため、EBCDICと他の
文字コード(
ASCII、Shift-JIS、
Unicodeなど)間の変換は、
オペレーティングシステム、
ミドルウェア、アプリケーションソフトウェアなどで頻繁に行われています。
IBM以外のメーカーでも、BS2000、HP MPE、Unisys MCPなど、EBCDICをベースとした
文字コードが使用されていました。
EBCDICの構造とコードページ
IBMのCDRA(Character Data Representation Architecture)では、EBCDICは「符号化方法」として位置付けられています。具体的な文字とコードの対応関係はコードページによって異なります。EBCDICでは、シングルバイト、ダブルバイト、マルチバイトの構造があり、それらの組み合わせによってCCSID(Coded Character Set Identifier)が定義されます。
例えば、日本語用のEBCDICのCCSIDは、ひらがなや
漢字の有無などによって10種類以上定義されています。さらに、
IBM以外のメーカーも独自のEBCDIC系
文字コードを開発しているため、実際には多数のEBCDIC系統の
文字コードが存在します。
コード配置と制御文字
EBCDICのコード配置は、コードページによって異なります。全てのコードページで共通の符号位置を持つ文字もありますが、多くの文字の位置はコードページによって変化します。
EBCDICにも、
ASCIIと同様に通信制御や周辺機器制御用の制御文字が定義されています。その範囲は、16進数の00h~3Fhと0FFhです。
ASCIIと共通の制御文字もありますが、改行制御など、異なる部分もあります。
例えば、改行制御に関する制御文字は、
EBCDIC:CR(Carriage Return)、NL(New Line)、LF(Line Feed)、FF(Form Feed)の4種類
ASCII:CR、LF、FFの3種類
と、違いが見られます。
EBCDICと現代
EBCDICは、歴史的背景から、現在でも特定のシステムで使用されていますが、新規開発では
ASCIIや
Unicodeが主流です。EBCDICを使用するシステムとのデータ交換には、適切な
文字コード変換が必要となります。
IBMは、EBCDICを含む様々な
文字コードに関する情報を公開しており、それらの情報は、システム開発やデータ移行において重要な役割を果たしています。