拡張バイナリコード化10進数交換コード[ 1 ] [ 2 ](EBCDIC ; [ 1 ] / ˈɛbsɪdɪk / )は、主にIBMメインフレームおよびIBMミッドレンジコンピュータのオペレーティングシステムで使用される8ビット文字エンコーディングです。これは、パンチカードで使用されていたコードと、 1950年代後半から1960年代前半にかけてIBMのほとんどのコンピュータ周辺機器で使用されていた対応する6ビットバイナリコード化10進数コードから派生したものです。[ 3 ]これは、富士通シーメンスのBS2000/OSD、OS-IV、MSP、MSP-EX、SDS Sigmaシリーズ、Unisys VS/9、Unisys MCP、ICL VMEなど、さまざまな非IBMプラットフォームでサポートされています。

EBCDICは1963年と1964年にIBMによって考案され、 IBM System/360シリーズのメインフレームコンピュータの発売とともに発表されました。これは8ビットの文字エンコーディングであり、7ビットのASCIIエンコーディング方式とは別に開発されました。既存のバイナリ符号化10進数(BCD)交換コード(BCDIC)を拡張するために作成されました。BCDIC自体は、パンチカード上の2つのゾーンと番号のパンチを6ビットに効率的にエンコードする手段として考案されました。物理的なカードの完全性を確保するために、パンチ穴が互いに近すぎないことが望ましい場合、パンチカードから「s」と「S」の異なるエンコーディング(1ではなく2を使用)が維持されました。[ 4 ]
IBMはASCII標準化委員会の主要な推進者であったが[ 5 ]、System/360コンピュータに同梱するASCII周辺機器(カードパンチマシンなど)を準備する時間がなかったため、EBCDICを採用した[ 3 ] 。System/360はRCA Spectra 70、ICL System 4 、富士通FACOMなどのクローンとともに大成功を収め、EBCDICも同様に成功した。
IBMのすべてのメインフレームオペレーティング システムと、ミッドレンジ コンピュータ向けのIBM iオペレーティング システムでは、EBCDIC が固有のエンコーディングとして使用されています[ 6 ] (ASCII も許容されており、たとえばz/OSのISPFでは、 EBCDIC と ASCII でエンコードされたファイルの両方を参照および編集できます)。ソフトウェアはエンコーディング間で変換でき、最新のメインフレーム ( IBM Zなど) には、ハードウェア レベルで文字セット間の変換を高速化するプロセッサ命令が含まれています。IBM Zメインフレームの C および C++ 言語用の最新の z/OS コンパイラ、およびIBM System/390メインフレームの以前のOS/390 C および C++ コンパイラは、デフォルトで ASCII を使用する POSIX 互換の実行環境をサポートしています。[ 7 ]
IBMハードウェア上で動作するすべてのオペレーティングシステムがEBCDICを使用しているわけではありません。IBM AIX、IBM Z上のLinux、およびPower上のLinuxはすべてASCIIを使用しており、 IBMパーソナルコンピュータとその後継機上で動作するすべてのオペレーティングシステムも同様です。
ASCIIとEBCDICの両方で動作するソフトウェアを作成するには、数多くの困難が伴う。
for(c='A';c<='Z';++c)putchar(c);オリジナルのEBCDIC文字コードに基づいたEBCDICコードページは数百種類あり、中国語、日本語(EBCDIC 930、JEF、KEISなど)、韓国語、ギリシャ語(EBCDIC 875)といった非ラテン文字を含む、世界各地での使用を想定した様々なEBCDICコードページが存在します。また、特に理由もなく文字を入れ替えたバリエーションも数多く存在します。
下の表は、EBCDIC の「不変サブセット」 [ 10 ]を示しています。これは、ラテン文字を使用するすべての EBCDIC コード ページで同じ割り当てを持つべき文字です。(これには、感嘆符を除くISO/IEC 646 の不変レパートリーのほとんどが含まれます。)また、コード ページ 37 (EBCDIC のコード ページ バリアントの 1 つ) で位置する、欠落している ASCII および EBCDIC 句読点も (灰色で) 示しています。空白のセルには、バリアントの地域固有の文字が入りますが、灰色の文字もよく入れ替えられたり置き換えられたりします。ASCII と同様に、不変サブセットは、英語などISO 基本ラテン文字のみを使用する言語でのみ機能します。
以下は、 ASCII 制御文字にマッピングされない、または追加の用途がある EBCDIC 制御文字の定義です。Unicode にマッピングされる場合、これらは主に IBM の文字データ表現アーキテクチャ (CDRA) で規定された方法で C1 制御文字コードポイントにマッピングされます。[ 11 ] [ 12 ]
デフォルトの改行 (NL) のマッピングは ISO/IEC 6429 次の行文字 (NEL、U+0085、その動作は Unicode Annex 14 でも規定されているが必須ではない) に対応しているが、[ 13 ]これらの C1 にマッピングされたコントロールのほとんどは、ISO/IEC 6429 C1 セットのコントロールとも、 ISO 6630などの他の登録済み C1 コントロール セットのコントロールとも一致しない。[ 14 ]これにより、非 ASCII EBCDIC コントロールは事実上独自の C1 コントロール セットとなるが、ISO-IRレジストリに登録されている C1 コントロール セットには含まれていないため、[ 15 ]割り当てられたコントロール セット指定シーケンスがない ( ISO/IEC 2022で規定され、ISO/IEC 10646 (Unicode) でオプションで許可されている)。[ 16 ]
U+0085(次の行)を除いて、Unicode標準はC1制御文字の解釈を規定しておらず、その解釈を上位レベルのプロトコルに委ねています(他の目的で使用しない場合は、ISO/IEC 6429の解釈を推奨していますが、必須ではありません)[ 17 ] 。したがって、このマッピングはUnicodeでは許可されていますが、規定されていません。
以下のコードページは、完全なLatin-1文字セット(ISO/IEC 8859-1)を備えています。最初の列は元のコードページ番号を示します。2番目の列は、共通通貨記号(¤)をユーロ記号(€)に置き換えて更新したコードページ番号(またはEBCDIC 924の場合は、ISO 8859-15に合わせて文字セットを変更したコードページ番号)を示します。
国によってコードページが異なるのは、これらのコードページが国固有の文字レパートリーを持つコードページとして始まり、後にISO 8859-1レパートリー全体を含むように拡張されたためであり、特定のISO 8859-1文字が異なるコードページで異なるコードポイント値を持つ可能性があることを意味します。これらは国別拡張コードページ(CECP)として知られています。 [ 21 ]
オープンソースソフトウェアの提唱者でありソフトウェア開発者でもあるエリック・S・レイモンドは、自身のジャーゴンファイルの中で、EBCDICはハッカーに嫌われていたと書いています。ここで彼がハッカーと呼んだのは、熱心なプログラマーのサブカルチャーのメンバーのことです。[22] 今日ではベンダーロックインとして知られているものは、ジャーゴンファイルの中で次のような定義で冗談めかして批判されています。[ 23 ] [ 24 ]
EBCDIC: /eb´s@·dik/、/eb´see`dik/、/eb´k@·dik/、n. [略語、Extended Binary Coded Decimal Interchange Code] IBMの恐竜で使用されていたとされる文字セット。少なくとも6つの互換性のないバージョンが存在し、いずれも連続しない文字シーケンスや、現代のコンピュータ言語にとってかなり重要なASCII句読点文字がいくつか欠落しているといった特徴がある(どの文字が欠落しているかは、EBCDICのどのバージョンを見ているかによって異なる)。IBMは1960年代初頭にパンチカードコードからEBCDICを採用し、顧客制御戦術として普及させ(コネクタ陰謀を参照)、既に確立されていたASCII標準を軽視した。今日、IBMはオープンシステム企業であると主張しているが、EBCDICのバリアントとその間の変換方法に関するIBM自身の説明は、内部では依然として極秘扱いであり、読む前に焼却しなければならない。ハッカーたちはEBCDICという名前を聞くだけで顔色を失い、それを純粋な悪の顕現とみなす。
—ジャーゴンファイル4.4.7
EBCDIC設計は多くのジョークのネタとなった。4.3BSD Reno(1990年)[ 25 ]のUnixフォーチュンファイルで見つかったジョークの一つは次のようなものだった。
教授:「それでアメリカ政府はIBMに暗号化標準を考案するように依頼し、彼らは――」学生:「EBCDICです!」
EBCDIC文字セットへの言及は、1979年のコンピュータゲームシリーズ『Zork』で見られる。 『Zork II』の「マシンルーム」では、EBCDICは理解不能な言語を暗示するために使用されている。
ここは様々な重機が所狭しと並び、けたたましい音を立てている広い部屋だ。部屋には焦げた抵抗器の臭いが漂っている。壁沿いには、それぞれ丸型、三角形、四角形のボタンが3つ並んでいる。当然ながら、これらのボタンの上にはEBCDICで書かれた指示が記されている。
2021年、ベルギーの銀行が2019年にも内部でEBCDICを使用していたことが公になった。顧客は、自分の姓の正しい綴りにはウムラウトが含まれているが、銀行がそれを省略したと主張し、一般データ保護規則で保障されている「不正確な個人データの適時な訂正」の権利を根拠に苦情を申し立てた。銀行の主張には、システムがEBCDICを使用していること、また、発音記号付きの文字(あるいは小文字)をサポートしていないことが含まれていた。控訴裁判所は顧客側の主張を認めた。[ 26 ] [ 27 ]
...しかし、プリンターとパンチは ASCII を処理する準備ができていなかったため、IBM は発表せざるを得ませんでした。
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)64 個の制御文字...ASCII DELETE 文字 (U+007F)... は、IBM Character Data Representation Architecture (CDRA) で定義されている EBCDIC の規則に従ってマッピングされますが、例外が 1 つあります。EBCDIC のラインフィードとニューラインの制御文字のペアは、CDRA のデフォルトのペアから ISO/IEC 6429 のラインフィード (U+000A) とネクストライン (U+0085) の制御文字に交換されます。
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク)その他の C0 または C1 セットの場合、最後のオクテット F は国際符号化文字セット登録簿から取得するものとする。...このようなエスケープシーケンスがこの国際規格に準拠するコードユニットシーケンス内に現れる場合、条項 11 に従ってパディングするものとする。
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク)EBCDIC の「意味開始」制御文字のニーモニックは、末尾にドット (.) を追加するように変更されています (SOS.)。これは、ISO-8 で使用されている「文字列開始」制御文字の SOS ニーモニックと区別するためです。ドットを追加しても、制御文字のプロパティは一切変わりません。