BCD(文字エンコーディング)

BCD交換コード
分類6ビット英数字基本ラテン文字エンコーディング
後継者EBCDIC

BCD2進化10進数)は、英数字BCD英数字BCDBCD交換コード[ 1 ]またはBCDIC[ 1 ]とも呼ばれ、数字、大文字のラテン文字、および一部の特殊文字と制御文字を6ビットの文字コードとして表現するコードファミリーです。

ASCIIなどの後発のエンコードとは異なり、BCDコードは標準化されていませんでした。異なるコンピュータメーカー、さらには同じメーカーでも異なる製品ラインごとに独自のバリエーションが存在することが多く、固有の文字が含まれている場合もありました。FIELDATA [ 1 ]のバリエーションやTranscodeなど、マッピングが全く異なる他の6ビットエンコードは、誤ってBCDと呼ばれることがあります

BCD の多くのバリエーションは、文字「0」から「9」を対応するバイナリ値としてエンコードします。

歴史

技術的には、2進化10進数は、各10進数が固定数のビット(通常は4つ)で表される10進数のエンコードを表します。

1928年のIBMカードの導入に伴い、IBMは英数字情報を表現できるコード[ a ]を開発し、 [ 2 ]後に他のメーカーにも採用されました。このコードは0~9の数字を1つのパンチで表現し、大文字と特殊文字には複数のパンチを使用します。[ 3 ]文字は2つのパンチ(ゾーン[12,11,0] + 数字[1~9])を持ち、ほとんどの特殊文字は2つまたは3つのパンチ(ゾーン[12,11,0、またはなし] + 数字[2~7] + 8)を持ちます。

BCDコードは、パンチカードコードを6ビットの2進コードに適合させたもので、数字列(9行とパンチされていない行)を下位4ビットに、ゾーン列(3行とパンチされていない行)を上位2ビットにエンコードする。[ 4 ]数字ゼロ(0行目の単一パンチ)は通常、何らかの方法で特別に処理され、数字コードは2~7の範囲の数字と8行目のパンチを組み合わせることで10~15の値に拡張された。IBMは、IBM 1620IBM 1400シリーズ、IBM 700/7000シリーズの非10進アーキテクチャー製品など、初期のIBMコンピューターのほとんどで使用されていたBCD英数字のバリエーションに、 2進化10進数およびBCDという用語を適用した。

BCDを使用していたベンダーとしては、バローズ[ 5 ]ブルCDC[ 6 ] IBMゼネラルエレクトリック(コンピュータ部門は1969年にハネウェルに買収された)、NCRシーメンススペリー-ユニバックなどがある

IBM は、1964 年にSystem/360製品ラインを導入し、BCDIC に基づいた8 ビットの拡張 2 進化 10 進コード(EBCDIC) を発表しました。

特殊文字

レコードマーク文字(‡と表記)は、レコードの終了を示す文字です。[ 7 ]この文字のBCDコードは、一部のBCDバリアントでは32 8です。最も近いUnicode文字はU+29E7THERMODYNAMICですが、多くのフォントには含まれていないため、代わりにU+2021DOUBLE DAGGERが使用されることが多いです。機能的には、これはEBCDIC IRS文字(ASCII RS )のX'1E'に対応します。

グループマーク文字と表記)は、関連するフィールドのグループの開始または終了を示す文字です。[ 8 ]この文字のBCDコードは、一部のBCDバリアントでは77 8です。グループマークは2015年にUnicode標準化のために提案され、[ 9 ] U+2BD2GROUP MARKの値に割り当てられました。機能的には、EBCDIC IGS文字(ASCII GS)のX'1D'に対応します。現在、Unicode 10.0ではこの位置にありますが、SymbolaフォントとUnifontフォントのみがこれをサポートしています。

一方、ワードマークはBCD文字ではありません。IBM 1401などの可変長ワードを持つコンピュータにおいて、ワードの終わりを示すために使用されるフラグビットです。

BCDコードのバリエーション

6ビットBCDコードには様々なバージョンがあり、その違いは大きく分けて3つのカテゴリーに分けられます。

  1. ゾーンパンチから上位ビットへのマッピング。すべてのコードにおいて、ゾーンパンチなしはビットパターン00に変換されますが、一部のコードではアルファベット順を維持しながら12-11-0の順序でゾーンパンチをエンコードしますが、他のコードでは0-11-12の順序でエンコードするため、アルファベットが部分的に反転します。
  2. 数字0の扱い。パンチされた形式からの直接的な変換では、1~9の数字の前に空白を配置し、行頭に「S」を含む0をエンコードします。すべてのコードには特別な処理があり、数字0をすべてゼロのバイナリコードに変換するか(空白を別の場所に移動する)、バイナリコード001010(10進数で10)に変換して8+2のパンチを別の場所に移動するかのいずれかです。
  3. 特殊文字の割り当て。基本英数字セット以外のコードに割り当てられる文字は、同じコンピュータモデル内であっても大きく異なっていました。例えば、一部のコンピュータ[ b ]では、パーセント記号と菱形(U+2311SQUARE LOZENGE )が、他の[ c ]エンコーディングの左括弧と右括弧と同じコードに割り当てられていました。

「スペイン語圏の国」では、文字「Ñ」は元のシステムには存在しなかったため、 Bull、NCR、Control Data などのほとんどのメーカーは「@」を選択しましたが、データベースを 7 ビット ASCII コードに統合する際に不整合が発生しました。そのコーディング システムでは「/」文字が選択されたため、同じ文字に対して 2 つの異なるコードが生成されました。

BCDコードの例

以下の表は、BCD文字の数値を16進数(基数16)表記で示しています。これは、4ビットの2進化10進数に2ビットを加えた構造を最も明確に反映しています。例えば、3x行x1列にある「A」のコードは、16進数では31、2進数では「11 0001」です。

テープスタイル

48文字のBCDコード

BCDIC の最初のバージョンは、カード パンチ パターンとプリンターの文字セットに基づいていたため 48 文字でしたが、どちらも 2 の累乗の文字数を持つことを推奨していませんでした。

IBM 48文字BCDICコード[ 1 ] : 68
x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x 空間1234567890#@
1倍 /STあなたVWXはいZ%
2倍 -JKLMP質問R$*
3倍 BCDEFGH

これは 40 文字のパンチカード コードに基づいていました。元の 37 文字 (10 桁の数字、26 文字、空白) に、1932 年頃に追加された 3 つの商業的に重要な文字 ( [ 1 ] : 67 クレジット残高やハイフンでつながれた名前の印刷に使用されるハイフン -マイナス、多くの名前や住所 ( Procter & Gamble、Mr. & Mrs. Smith)でも使用されるアンパサンド、および小切手の印刷時に未使用のフィールドをオーバープリントするために使用されるアスタリスク) です。

IBM 1401 BCDコード

IBM 1401はIBM 704のストレージ表現ではなく、テープ表​​現(48文字BCDから派生)を採用し、ブランクにはすべてゼロのコードを、数字のゼロに10(0x0A)のコードを使用しました。文書化のために、すべての可能な値に対して文字形式を定義していましたが[ 10 ]、ブランク以外の63文字のうち印刷可能なのは48文字のみであり、その他のコード値(下表で網掛けされている部分)の実際の表現にはかなりのばらつきがありました。その他の文字でさえ、IBM 1403プリンターで利用可能な印刷チェーンによって異なっていました。

x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x 空間1234567890#@:>
1倍 ¢/STあなたVWXはいZ%'
2倍 -JKLMP質問R!$*;Δ
3倍 BCDEFGH?<

コードページ353

BCDIC-Aコードページはコードページ353 ( CP353とも呼ばれる)に割り当てられました。このコードページの一部の文字はUnicodeには存在しません。(「#」の重複はIBM自身のドキュメントに記載されており、誤りではありません。[ 11 ]

x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x 空間1234567890#@:>
1倍 /STあなたVWXはいZ%γ\
2倍 -JKLMP質問R!#*];Δ
3倍 BCDEFGH?[<

0x1A はレコードマークです。0x3F はグループマークです。

コードページ354

BCDIC-Bコードページはコードページ354 ( CP354とも呼ばれる)に割り当てられました。[ 12 ]このコードページの一部の文字はUnicodeには存在しません。

x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x 空間1234567890':>
1倍 /STあなたVWXはいZγ\
2倍 -JKLMP質問R!#*];Δ
3倍 +BCDEFGH?[<

0x1A はレコードマークです。0x3F はグループマークです。

PTTC/BCD コードページ

PTTC/BCDには5つのオプションがありました。コードページも5つありました。以下に示します。PTTC/BCD標準オプションは、コードページ355、またはCP355に割り当てられました。

x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x 空間1234567890#
1倍 @/STあなたVWXはいZγ
2倍 -JKLMP質問R<$
3倍 BCDEFGH

PTTC/BCD H オプションは、コード ページ 357、またはCP357として割り当てられました。

x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x 空間1234567890
1倍 '/STあなたVWXはいZ
2倍 -JKLMP質問R!$
3倍 +BCDEFGH?

PTTC/BCD 対応オプションは、コード ページ 358、またはCP358として割り当てられました。

x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x 空間1234567890'
1倍 !/STあなたVWXはいZ
2倍 -JKLMP質問R<;
3倍 BCDEFGH>

PTTC/BCD モノケース オプションは、コード ページ 359、またはCP359として割り当てられました。

x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x 空間1234567890#
1倍 @/STあなたVWXはいZ
2倍 -JKLMP質問R$
3倍 BCDEFGH

PTTC/BCD Duocase オプションは、コード ページ 360、またはCP360として割り当てられました。

x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x 空間1234567890#
1倍 @/STあなたVWXはいZ
2倍 -JKLMP質問R$
3倍 BCDEFGH

IBM 704 ストレージスタイル

IBM 704 BCDコード

IBM 704はBCDICコードを再編成し、内部的に0が1の前、AがZの前となる通常のアルファベットの照合順序を可能にした。磁気テープの読み書き時に、この内部形式と以前のBCDICとの間で自動的に変換することができた。[ 13 ] : 35

以下の表はIBM 704コンピュータのコード割り当てを示しています。割り当てられていないコード位置は空白で表示されます。[ 13 ]:35

IBM 704文字セット
x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x 0123456789#@
1倍 BCDEFGH+0
2倍 -JKLMP質問R0$*
3倍 空間/STあなたVWXはいZ%

+0そして0パンチカードの 12 行目または 11 行目にオーバーパンチされた符号付きの数字 0 に対応する、めったに使用されない文字でした。

次の表は、IBM 704コンピュータから7094まで使用されたタイプ716プリンタのコード割り当てを示しています。 [ 13 ]:58 704インターフェース[ d ]は、このプリンタに仮想パンチカード行を2ワード(72ビット)ずつ送信したため、6ビットBCD文字からのマッピングはソフトウェアによって行われ、プリンタには組み込まれていませんでした。

IBM 716 プリンタ文字セット G
x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x *123456789+-
1倍 +BCDEFGH
2倍 -JKLMP質問R$*
3倍 0/STあなたVWXはいZ%

これは、文字+-、 が*重複しているため、45 文字 (プリンタによって特別に処理される空白は除く) のレパートリーです。

Fortran文字セット

多少のバリエーションがあり、IBM 704 Fortranでは特殊文字のセットが異なっていました(重複したマイナス記号アスタリスクピリオドカンマドル記号のみが保持されます)。[ 14 ]

IBM 716 プリンター Fortran 文字セット
x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x *123456789-
1倍 +BCDEFGH
2倍 -JKLMP質問R$*
3倍 0/STあなたVWXはいZ

同様のコードがIBM 709、7090、7094後継にも使用されましたが[ 15 ]、一部の特殊文字は再割り当てされました 。

IBM 7090/7094 文字セット
x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x 0123456789
1倍 BCDEFGH+0
2倍 -JKLMP質問R0$*
3倍 空間/STあなたVWXはいZ±

GBCDコード

以下はBCDの変種であるGE/ハネウェルのGBCDコードの表です。[ 16 ]

x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x 0123456789[#@:>?
1倍 空間BCDEFGH]<\
2倍 ^JKLMP質問R-$*;'
3倍 +/STあなたVWXはいZ_%!

Burroughs B5500 BCDコード

次の表は、 Burroughs B5500コンピュータのコード割り当てを示しています。これはBIC(Burroughs Interchange Code)と呼ばれることもあります。[ 17 ]

x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
0x 0123456789#@?:>
1倍 +BCDEFGH[<
2倍 ×JKLMP質問R$*-;
3倍 空間/STあなたVWXはいZ%]

参照

注記

  1. ^実際には複数のカード コードが存在し、たとえば 1964 年までにIBM 026にはわずかに異なる文字セットを持つ 10 のバージョンがありました。
  2. ^例: IBM 702 IBM 705
  3. ^例: IBM 701 IBM 704
  4. ^たとえば 7090 のインターフェースは異なりますが、ソフトウェアは依然としてマッピングを行う必要があります。

参考文献

  1. ^ a b c d e Mackenzie, Charles E. (1980). Coded Character Sets, History and Development (PDF) . The Systems Programming Series (1 ed.). Addison-Wesley Publishing Company, Inc. ISBN 0-201-14460-3. LCCN  77-90165 . 2016年5月26日時点のオリジナルよりアーカイブ(PDF) . 2017年4月22日閲覧.[1]
  2. ^ Pugh, Emerson W.; Heide, Lars. 「STARS:パンチカード機器」 IEEE Global History Network. 2012年5月11日時点のオリジナルよりアーカイブ。 2012年6月9日閲覧
  3. ^エマーソン・W. ピュー(1995年)『IBMの構築:産業とその技術の形成MITプレス、pp.  50-51 . ISBN 978-0-262-16147-3
  4. ^ Jones, Douglas W. 「パンチカードコード」 。 2014年1月1日閲覧
  5. ^ Burroughs B5500 情報処理システム: リファレンスマニュアル(PDF) . Burroughs Corporation . 1964. 2020年7月29日時点のオリジナル(PDF)からアーカイブ。 2012年6月8日閲覧
  6. ^コントロールデータコーポレーション(1965).コード/コントロールデータ6600コンピュータシステム(PDF) .
  7. ^ 「レコードマーク」 .百科事典. PC Magazine . 2016年4月9日閲覧。
  8. ^ 「グループマーク」 . Encyclopedia.com . 2016年4月9日閲覧。
  9. ^ Shirriff, Ken. 「グループマーク記号の追加提案」(PDF) . unicode.org . 2016年4月9日閲覧
  10. ^ IBM 1401 データ処理システム: リファレンス・マニュアル(PDF) . IBM . 1962年4月. p. 170. A24-1403-5.オリジナル(PDF)から2012年3月14日にアーカイブ。
  11. ^ 「Systems i Software Globalization cp00353z」(PDF)www-03.ibm.com2013年1月21日時点のオリジナル(PDF)からアーカイブ。 2022年6月30日閲覧
  12. ^ https://ccsids.net/ccsids.html#ccsid-354 .{{cite web}}:欠落または空|title=(ヘルプ)
  13. ^ a b c IBM 704電子データ処理機械操作マニュアル(PDF) . IBM . 1955年. pp. 35, 58. フォーム24-6661-2 . 2017年4月22日閲覧。
  14. ^ 「IBM 704用Fortran自動コーディングシステム」(PDF) IBM 1956年10月15日 p. 49。2015年9月24日時点のオリジナル(PDF)からアーカイブ。 2015年9月15日閲覧
  15. ^ Harper, Jack (2001年8月21日). 「IBM 7090/94の文字表現」 . 2017年3月16日時点のオリジナルよりアーカイブ。 2017年4月22日閲覧
  16. ^ 「セクション:BULLコンピュータの文字表」(PDF) 。 2011年7月8日時点のオリジナル(PDF)からアーカイブ。 2010年11月15日閲覧
  17. ^ Burroughs B 5500 情報処理システム拡張アルゴリズムリファレンスマニュアル(PDF) 1966年、p. B-1。

さらに読む