EBCDIC

EBCDIC (、エビシディック、拡張二進化十進コードAS/400用語集) はIBMにより定義された8ビットのコード化文字セットであるExtended Binary-Coded Decimal Interchange Code (EBCDIC) - IBM Terminology。ASCII普及前の1963年に、BCD(Binary-coded decimal、二進化十進コード)を拡張する形で作られ、主にIBM系のメインフレームやオフィスコンピュータなどで使用されているWhat is EBCDIC? - wiseGEEKThe EBCDIC character set - Application programming on z/OSEBCDIC - DB2 10 for z/OS。

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

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

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

IBMはASCII標準化委員会の主提案社であったがThey had 4 staff on the final 21-member ASA X3.2 sub-committee、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と呼んでいる付録K.4　EBCDIC／EBCDIKのコード表 - 日立製作所。上述のようにIBMの日本用EBCDICの組み合わせ(CCSID)は10以上定義されているが、他メーカーでは細部が異なるため、いわゆるEBCDIC系統では多数の文字コードが存在している。

 詳細 
 CCSID、コードページとの関係 
上述のように、IBM CDRA上ではEBCDICは「文字コード」ではなく「符号化方法」の1つであり、具体的なコード配置（各文字と符号位置の配置）はコードページによっても異なる。符号化方法にEBCDIC (1100)を使用したコードページとCCSIDの例には以下がある。なお CCSID 5026（日本語カタカナ拡張）にはコードページが2つあり（混合CCSID）、切り替えて使用する。
+ EBCDICを使用したCCSID、コードページの例 CCSID  コードページ(CPGID)  符号化方法(ES)  コードページ名  備考 37CCSID 37 - IBM CDRA  37  1100  USA/Canada - CECP  USA英語(EBCDIC) 500CCSID 500 - IBM CDRA  500  1100  International #5  多国語英語(EBCDIC)5026/930/1390CCSID 5026 - IBM CDRA  290  1100  Japanese (Katakana) Extended  SBCS日本語カナ(EBCDIC) 300  1100  Japan (Kanji) - Host, DBCS  DBCS日本語(EBCDIC)5035/939/1399CCSID 5035 - IBM CDRA  01027  1100  Japanese (Latin) Extended  SBCS日本語英小文字カナ(EBCDIC) 300  1100  Japan (Kanji) - Host, DBCS  DBCS日本語(EBCDIC)

 コード配置 
 EBCDICを使用した全てのコードページで、共通の符号位置を持つ文字 (例えば、'SP'(ブランク) = X'40'は共通だが、以下に記載の無い英小文字の有無や位置はコードページにより異なる）
 00102030405060708090A0B0C0D0E0F00    sp&-        01      /     AJ 12            BKS23            CLT34            DMU45            ENV56            FOW67            GPX78            HQY89            IRZ9A       :        B    . ,#        C    <*%@        D    ()_'        E    +;>=        F      ?"        

カナ拡張されたEBCDICコードの例(IBMによるカナ拡張の一例;コードページ:298の場合)
 00102030405060708090A0B0C0D0E0F00    sp&-コテハムリ{}¥01     ゥ/サaj～ルAJ 12    。ェイシbksレBKS23    「ォウスcltロCLT34    」ャエセdmuワDMU45    、ュオソenvンENV56    ・ョカタfow゛FOW67    ヲッキチgpx゜GPX78    ァークツhqy HQY89    ィアケ｀irz IRZ9A    ¢!¦:トヒメ     B    .$,#ナフモ     C    <*%@ニヘヤ     D    ()_'ヌホユ     E    +;>=ネマヨ     F    │￢?"ノミラ     

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

IBMによるカナ拡張の一例（コードページ:298)と組み合わせた場合のコード表
 00102030405060708090A0B0C0D0E0F00NULDLEDS（予約）sp&-コテハムリ{}¥01SOHDC1SOS（予約） ゥ/サaj～ルAJ 12STXDC2FSSYN。ェイシbksレBKS23ETXDC3WUSIR「ォウスcltロCLT34SELRES/ENPBYP/INPPP」ャエセdmuワDMU45HTNLLFTRN、ュオソenvンENV56RNLBSETBNBS・ョカタfow゛FOW67DELPOCESCEOTヲッキチgpx゜GPX78GECANSASBSァークツhqy HQY89SPSEMSFEITィアケ｀irz IRZ9ARPTUBSSM/SWRFF¢!¦:トヒメ     BVTCU1CSPCU3.$,#ナフモ     CFFIFSMFADC4<*%@ニヘヤ     DCRIGSENQNAK()_'ヌホユ     ESO/LS1IRSACK（予約）+;>=ネマヨ     FSI/LS0IUS/ITBBELSUB│￢?"ノミラ    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種類）

 脚注 

 参考文献 


 外部リンク 
  - IBMの文字コード全体の資料と、EBCDICを含む各文字コードのコード表
  - コードページ 1172（日本語拡張，EBCDIC/汎用PC）

 SJIS(IBM943)、EBCDIC(IBM930)の文字コードMAPについて (リンク先に日本語コード一覧表)

Category:文字コード
Category:IBM