パンチカード
パンチカード(英語:Punched card)は、穿孔カードなどともいう、厚手の紙に穴を開けて、その位置や有無から情報を記録する記録媒体で、以前には鑽孔紙テープとともに多用された。電子式コンピュータ以前のパンチカードシステムの時代から多用されたものであるが、近年はコンピュータ用の主力メディアとしては過去のものとなっている。画像などといった大容量のデータを負担なく扱えるようになる以前には、四角い窓を作ってそこに写真フィルムを張る、といった使い方や、端に切れ込みを入れて串を使った手作業で分類できる edge-notched card(#ハンドソートパンチカードの節を参照)など、紙テープとは違ったカードならではの使い方もある。
現在の使われ方としては、国や地方によっては選挙の投票用であるとか、穴を開けるのではないものの、マークシート用で同一の大きさ・形状・材質のカードが使われていることがある。
パンチカードの先祖は織機に由来する。いくつかの先行例はあるが、広く知られている、「厚紙でできた」「定形のカードに」「穴を開けた」ものを利用して、模様を自動的に織り込むようなカラクリが組込まれた完成度の高い自動織機は、19世紀初頭、フランスのジョゼフ・マリー・ジャカールにより作られ、その名が付けられたジャカード織機は、その末裔が今日でも使われている。
機械の制御ではなく、情報の格納手段としてパンチカード状のものを最初に使ったのはセミヨン・コルサコフとされている。コルサコフは彼の考案した技法と機械を1832年9月に発表し、特許を取得せずに機械を公的な用途に供した。
19世紀に「(数値を)計算する機械」の制御にパンチカード状のものを使うことが構想されたものとして、チャールズ・バベッジの「解析機関」がある。バベッジはジャカード織機をヒントにしたとされている。なお、解析機関は完成しなかった。
20世紀にコンピュータ用として多用されたパンチカードそのものの直接の祖先は、19世紀末のアメリカで、ハーマン・ホレリスによるものである。大規模な移民の受け入れにより急激に人口が膨張しつつあったアメリカでは、1880年の国勢調査が1889年になっても集計が完了しないという事態が発生していた(これには、単純な人口の増加だけではなく、集計する項目を増やしたことによる必要な作業量の増大にもよると言われる)。次回の調査を実施する時期に至ってもまだ前回の調査の集計が終わらないというこの困難を、ホレリスは機械の導入により解決することを考察した。当初は鑽孔テープなどを試したが、最終的にパンチカードという形態にたどり着いた。ホレリスが考案した、パンチカードを利用するデータ処理機械であるタビュレーティングマシンは、国勢調査の手作業による集計に比して10倍のスピードを実現したとされる。同時に、1〜9および0の、十進ヒトケタの整数値とアルファベットをパンチカードの穴でエンコードする一種の文字コード(現代の文字コードとは異なり、紙製のカードで利用する前提で設計されている(例えば、全部の桁に穴を開けたりはしない))「ホレリスコード」も考案した。
当時は手書きで記録を取り、それを事務所に持ち帰ってパンチカードに転記するという手間を踏んでおり、かつホレリスの集計機自体も1回1回人間が処理の仕方を設定する必要があるなどの欠点があったが、その圧倒的な処理能力は「驚異のテクノロジー」と賞賛され、政府機関だけではなく様々な分野で使用されていくことになる。多数の顧客情報を処理しなければならない保険会社などでも使われた。後に電気式加算機の計算機構を組み込んでかなりの計算ができる機械が登場し、会計処理だけでなく科学技術計算にも使われるようになった。
ホレリスは1枚のカードに45項目、1項目につき12種類の選択肢の情報が記録できるような仕様を策定した。このカードはサイズを身近な1ドル紙幣と同一にし、普及のために低額で販売したため、事実上の標準となった。そして1896年にこの事業のためにホレリスが興した「タビュレーティング・マシーンズ社」は、幾度かの統合を経て巨大企業IBMの母体となっていく。ホレリスの仕様は、後にIBMによってカードのサイズは同じままでカードの穴を円形から長方形にすることで80項目に拡張された。この仕様、特に「1行 80項目(桁)」は、FORTRANを筆頭としてその後長く受け継がれていくことになる(後述)。
1950年代まで、パンチカードはデータ入力やデータ保管、データ処理の主な手段として使われた(ただし、もっぱら鑽孔紙テープを利用したコンピュータ、あるいはテープを好んだ文化のメーカーもある)。IBMの記録によれば、IBMは1937年にはニューヨーク州エンディコットに32のパンチカード工場を持ち、毎日500万枚から1000万枚のパンチカードを生産していた。パンチカードはアメリカ合衆国連邦政府の小切手や貯蓄債券など法的書類にも使われていた。
以上で述べたようなデータ処理機械の歴史に続いて、Harvard Mark I (1940年代) のような数値計算機械もあらわれ、第二次世界大戦の終わった後、急速に(電子式)コンピュータの発展が進み、数値計算とデータ処理の統合といえる、情報処理(information processing)やコンピューティングと言われるようになった(チューリングやノイマンやシャノンらによる数理的な理論の確立、という背景もある)。
1950年代、UNIVAC I の入出力装置UNITYPERが新たなデータ入力手段として磁気テープを導入した。1960年代には磁気テープを採用するコンピュータが増えていき、パンチカードから高速で書き換えの効く磁気テープへの移行が徐々に進行した。IBMはすぐにUNIVACを追撃し、1960年代には世界一のコンピュータ企業となった。
1965年、Mohawk Data Sciences はキーパンチの代替として直接磁気テープにタイピング内容を記録する磁気テープエンコーダという機器を発売し、ある程度の成功を収めた。それでもパンチカードはデータおよびプログラム入力手段として1980年代中ごろまで使われ続けた。1952年発売のIBM初の商用コンピュータIBM 701や、大ヒットとなったSystem/360のデータ入力の基本は80桁長方形の穴のパンチカードである。またUNIVACなどのコンピュータでは丸穴の90桁のカードが使われた。
元々機械的な装置だった時代にアウトラインが決まったものであるため比較的大きく、トランジスタ化などコンピュータの進歩に合わせ小型化したものも試作されたりしているが、既にデファクトスタンダードとして普及してしまったものを置き換えるには至らなかった。
またプログラミングなどの際には、穿孔してしまうので現代のテキストエディタのような文字単位の編集は後から一切できないという欠点から、一般に鉛筆などを用いて別の紙、あるいはカードの上辺の間隔が空く位置に書き込んでおき、あとでまとめてパンチしていた(なお、コンピュータ時代のパンチ機械には、穿孔と同時に印字されるといったものも多い)。大規模な組織などでは、プログラマとは別にキーパンチャー(単にパンチャーとも)という専門職によってプログラム用のカードもパンチされるなど分業されていることもあった。
パンチカードの利点は、行単位の編集が容易であるということがある。プログラムの1行がパンチカードの1枚になるため、内容を修正したい場合は、修正行に相当するカードを差し替えるだけでよい。また、ブロック単位に移動する場合もカードを入れ替えるだけで済む。これは紙テープでは物理的な切り貼りを行なう必要があることを考えると、非常に効率的と言える。一方で行単位ではない編集は極端に苦手であり、むしろ紙テープの物理的な切り貼りのほうが有利と言える。プログラマによっては、全く同じ内容になるような行が現れるように工夫し、「ソースコードの再利用」を実際のパンチカードの再利用として行っていた者もいた。
また、当時ありがちだった事象として、パンチカードの束(デック)を、落とすなどしたはずみでバラバラに散らしてしまい、順序がわからなくなってしまうと並べ直すのが大変、というものがあった。通し番号が打たれているなどすればなんとかなるが、さもなくば入力し直した方が速いなどとも言われた。当時の写真などで、カードデック上部に斜線を引いたりしたものがあるのは、並べ直しを簡単にするための工夫である。
1970年代から1980年代にかけて、磁気ディスクや端末が低価格化し、安価なミニコンピュータが普及したため、パンチカードはコンピュータへのデータ入力手段としての役目をほぼ終えた。また、そもそもミニコンピュータはメインフレームとは違う文化圏を形成し、その文化圏では紙テープのほうが好まれた、といった側面もある。それでも、多くの業界標準規格やファイルフォーマットにパンチカードの影響が残っている。パンチカードの代替となった IBM 3270 などの端末は、既存のソフトウェアとの互換性を考慮して一行の表示文字数をパンチカードと同じ80文字とした。グラフィカルユーザインタフェースは可変幅のフォントも表示可能だが、1行80文字を前提としたプログラムは今もある。
ごく簡単な読取機が作れる紙テープとは違い、比較するとかなり大袈裟な機構が必要なパンチカードは、1970年代の「マイコン革命」(Microcomputer revolution)においては完全に「旧勢力の遺跡」であり、その後のパーソナルコンピュータの誕生と普及によって、絶対数としては大きく減ったわけではないのだが相対的には圧倒的少数となったメインフレームと共に、少数派の存在となった。
2000年代頃より宿泊施設のカード型キーとして使われている所もある。穴を穿った厚めの紙をスリットに挿れ、その穴のパターンを読み取りロックを操作する。チェックアウトの際にそのパターンは無効となり、次のチェックインに新しいパターンが充てられる。
ホレリス(IBM)の80欄パンチカードが、コンピュータに与えた影響には以下がある。
メインフレームなどの大半の設定ファイルやJCLなどは、今(2014年)も1行80桁が基本である
FORTRANなどの言語は、今(2014年)も1行80桁が基本である
桁数に制限のない言語でもプログラミング作法として、1行を80桁とする流儀は今(2014年)でも根強い
3270や5250などメインフレーム用の表示装置やエミュレータは、今も1行80桁が基本である
IBM PC以後のパーソナルコンピュータの表示解像度(ピクセル)も、1行80桁が基本である
グラフィックモードでも、CGA、MCGA、EGA、VGAなど(更にはPC-9801やFM-Rなど、同時代のMS-DOS搭載PCの大半)は、全て1行のビット(ピクセル)数が80の倍数である(XGAは1024x768だが、元となった8514/Aは正確には1040x768で、やはり80の倍数であった)
ただし、パーソナルコンピュータの表示については、モニターに家庭用テレビを流用する設計としていた機種における、家庭用テレビの性能にもとづく仕様(40文字のものがあった)に由来する部分もあるので、パンチカードの80桁からの由来が全てではない
CMD.EXEやxtermなど端末エミュレータの起動時のデフォルトのウィンドウサイズは80桁に合わせたサイズである
また、モニターディスプレイのデフォルトの状態のコンソール(で表示されるブルースクリーンなどの画面)なども、1行80桁が基本である(ことが多い)
世界的に、大規模な選挙においては記号式投票が一般的であるため、その一手段としてパンチカードが投開票に使用されることもある。アメリカ合衆国の大統領選挙では1964年から採用する州や郡がある。1996年の時点では、登録有権者数において37.3%の地区でパンチカード式投票を採用していた。これは有権者がパンチカードに孔を穿つ方式だが、穿孔装置を押す力が弱い場合などに「穿孔くず」が残るなどして、誤った読み取りや、それに基づく問題を生んだ。2000年のアメリカ大統領選挙では再集計の度に集計結果が異なり、以前からあったこのシステムへの疑義が改めて提示されることとなった。
(この場合の)パンチカードは不完全なデジタル情報を記録するものであり、「孔が空いている」「空いていない」を人間が判断する必要が生じたことなどが、その原因の一つとして挙げられている。また、穿孔くずによって機械が止まり、それによって無効票が多数出るなどの問題も発生した。
これは、手操作により簡単に扱えるカードとして、事務用や調査データの処理用に以前は盛んに用いられたものである。英語では edge-notched card(Edge-notched card)という(日本では、日本パンチカード工業(株)が、『ハンドソートパンチカード』という名前で製造販売していた)。カードの周囲に多数の孔を開けたもので、特定の孔の部分を切符の改札のように切り取ることで情報を記録し、孔に棒を通して引き上げると、そこが切られたカードだけが振り落とされる、というものである(ここで使われている「ソート」の語は広義の用法で、数値的に昇順or降順に並べるという意味より広く、分類する、といったような意味である)。自然数の値を二進法で表現し、基数ソートによって数値的にソートすることもできる。
パンチカードは、IBMカードやホレリスカードとも呼ばれた。IBM自身は、文書で言及する際は最初に「IBMカード」あるいは「パンチカード」と呼び、その後は単に「カード」と呼んでいた。穴を開ける前のカードを "punched card" と呼ぶのは矛盾しているため、「タビュレーティングカード」あるいは「タブカード」という呼称も用いられていた。
当初、用途ごとにデザインされたカードレイアウトが使われていた。パンチカードとそれを扱う機械が標準化されるのは1928年ごろのことである。長方形、円形、楕円形などの穿孔くずはチャド (chad) またはチップ(chip、IBMの用語)と呼ばれる。複数文字からなるデータや大きな数はカード内の連続する欄をフィールドとして格納される。一連のカードの集まりをデックまたはデッキ (deck) と呼ぶ。カードの上辺の左右どちらかの端を斜めに切るのが一般的で、それによってデック内のカード順序の間違いや反対側の端が切られた別のデックのカードが混じっている場合などを容易に検出できるようにしていた。カードには穴の位置が判別できるような印刷がされているのが一般的である。特定用途用に縦の線を印刷することでフィールドを区切ったり、フィールド名を印刷したカードも存在した。
ハーマン・ホレリスは、機械式タビュレーティングマシンの一連の特許を1889年に取得した。それらの特許では、記録媒体として紙テープと長方形のカードの両方を記述している。uspto で示しているカードはテンプレートが予め印刷されていて、穴は辺に沿って開けることになっており、車掌が使っていた改札鋏を穿孔に使うことを想定していた。カードの中央部分は文字などの書き込み用とされていた。そもそもホレリスは、車掌が切符の端に鋏を入れる位置で乗客を大まかに分類していたことから、この方式を思いついた。
私は西部に旅したとき、たしか punch photograph と呼ばれる切符を持っていた。車掌は乗客の明るい頭髪、黒い瞳、大きな鼻といった特徴に応じて切符の所定の位置に入鋏していた。見ての通り、私がやったのは punch photograph を全員ぶん作っただけのことだ
。
改札鋏を使う方法は単調で間違いやすかったので、ホレリスはカード全体を穿孔領域とし、パンタグラフ型のキーパンチ(穿孔器具)を発明した。また同時にカードにテンプレートを印刷するのをやめ、パンチ機側にマスターテンプレートを装備し、人間がそれを見てパンチ位置を決定できるようにした。ホレリスはいくつかのカードサイズを検討した。1890年の国勢調査の集計に対してホレリスが提案したシステムでは、「一般的なあらゆる用途に対応できる」ものとして3インチ×5.5インチのマニラアサの繊維で作った紙を示唆している。
1890年の国勢調査で使われたカードは丸い穴を開けるもので、24欄12行の構成だった。このカードを使用する装置などの情報は、コロンビア大学のコンピュータ史についてのサイトにある。ある時点から3.25×7.375インチ (82.550×187.325mm) が標準カードサイズとなった。これは当時の1ドル紙幣より若干大きく(1ドル紙幣が2014年現在の大きさになったのは1929年から)、コロンビア大学のサイトによれば、紙幣運搬用の箱にぴったり収まるようにこの大きさにしたのだという。
ホレリスの当初のシステムでは、用途によって場当たり的な符号化システムを採用していた。つまり、いくつかの穴が特定の意味、例えば性別や既婚か未婚かなどを表すようにしていた。当時のタビュレーティングマシンには最大40個のカウンタがあり、それぞれに1周で100までを表せるダイヤルが対応していて、2つ1組で、一方のダイヤルがカウントアップして一周したらもう一方のダイヤルが1目盛りだけカウントアップするようになっていた。それによって10,000までのカウントが可能である。集計作業に際しては、個々のカウンタが特定の穴の位置に対応付けられている。ホレリスはまた、リレー回路を使った穴の組合せのカウントも可能にしており、例えば既婚の女性のみをカウントするといったことが可能だった。
その後符号化が標準化され、12行のうち下の10行を数字の0から9に対応させた。これにより連続する複数欄を使って大きな数値を表現できるようになり、単なるカウント以上のことが可能となった。Comrieの The application of the Hollerith Tabulating Machine to Brown's Tables of the Moon にはホレリスの45欄カードのイラストがある。
1928年、IBMは縦長の長方形の穴を採用し、80欄で各欄に12のパンチ位置があり、1欄(コラム)で1文字を表す形式のカードを設計した。寸法は 187.325 mm × 82.55 mm(7×3インチ)である。材質は厚さ178μm(0.007インチ)の滑らかな紙である。重ねると、143枚で1インチの厚さ(約56枚で1cm)となる。1964年、IBMは四隅を丸めた形に変更した。通常、2000枚が箱に収められた形か、連続帳票形式で販売された。連続帳票型のカードは、事前に番号とそれに対応する穴を開けた状態で販売されており、例えば小切手など厳密な文書管理が必要な用途に使われた。
1つの欄には数字の0から9に対応する部分と、カード上方のY-X-0ゾーン(12-11-0ゾーンとも呼ばれた)がある。数値のみを格納するだけなら各欄に1つだけ穴を開ければよい。数値の正負の符号は、最下位桁のY-Xゾーンで表し、正ならY、負ならXをパンチする。Y-Xゾーンは他にもマスターレコードであることを示すなど、様々な意味で使われた。カードの最上端にパンチ内容に対応した文字も印刷できる。また、81番目の爛もあり、これはプログラムなどの複雑なカードをカード穿孔機・カード読取機が処理する場合に、穿孔・読取誤り防止用のチェックディジットとして使われた。
<pre>
/&-0123456789ABCDEFGHIJKLMNOPQR/STUVWXYZ
Y / x           xxxxxxxxx
X|   x                   xxxxxxxxx
0|    x                           xxxxxxxxx
1|     x        x        x        x
2|      x        x        x        x
3|       x        x        x        x
4|        x        x        x        x
5|         x        x        x        x
6|          x        x        x        x
7|           x        x        x        x
8|            x        x        x        x
9|             x        x        x        x
|________________________________________________
</pre>
その後、1欄に複数の穴を開けることで英大文字と特殊記号を表現するようになった。英字は2カ所に穴を開け(Y-X-0ゾーンと数字1-9)、特殊記号は3カ所に穴を開ける(Y-X-0ゾーンと数字2-7と数字8)。一部の特殊記号は1穴または2穴で表される(EBCDICの "&" は12(Y)のみ、"-" は11(X)のみ、"/" は 0 + 1)。これにより、ゾーン [12, 11] と数字 [1-9] の組合せが何を表しているかはその欄の使いかたに依存するようになった。例えば、"12-1" という組合せは英字があるはずの欄では "A" を表し、符号付き数値があるはずの欄では正の符号つきの数字 "1" を表し、符号がないはずの位置の数字 "1" なら "12" は別の何らかの意味を持つ。EBCDICは1964年に導入され、最大6箇所に穴を開けるようになった(ゾーン [12,11,0,8,9] + 数字 [1-7])。IBMや他の製造業者は80欄カードに様々な文字コードを採用した。1969年のANSI規格では128種類の文字のパンチカード上のコードを定義しており、ホレリスコード(Hollerith Punched Card Code または Hollerith Card Code)と呼ばれる。
用途によってはバイナリ形式が使われ、それぞれの穴が1つのバイナリディジット(ビット)を表し、各欄(列)が単なるビットフィールドとして扱われ、任意の組合せで穴を開けられる。例えば704/709/7090/7094シリーズ科学技術コンピュータで使われた IBM 711 カード読取装置は欄(列)ではなく1行を36ビットワードを2つ格納したものと解釈した(72欄を使用し、8欄は無視する。無視する8欄をどこにするかは読取装置のプラグボードで変更可能だが、通常右端の8欄を無視する)。この無視される8欄(通常、73-80)をシーケンス番号を入れるのに使うことがあり、カードデックを落としたときなどにソートするのに使った。IBM 1130やSystem/360といったコンピュータでは全ての欄を使った。IBM 1402 カード読取/穿孔装置では、縦の1欄に2文字を格納するコラムバイナリというモードを使い、3欄(3行)で36ビットワードを表した。しかし、多くの古い穿孔装置は1欄に3穴までしか穿孔できず、バイナリカードを作ることはできなかった。
バイナリモードの冗談として、全部の位置に穴を開けたカードを作ることもでき、それを "lace card" と呼んだ。そのようなカードはカードとしての強度が足りず、機械の中で曲がったり詰まったりする。
80欄のカード形式は市場をほぼ独占し、他の業者も生産していたがIBMカードと呼ばれていた。
最もよく使われたのは IBM 5081 というフィールド分割されていない汎用のパンチカードである。その品番と形式は US Government Standard Form 5081 として採用され、他社もその番号を品名に採用していた。そのためユーザーにもその品番が知られていた。
IBMのレナルド・B・ジョンソンが開発したマークセンスカードは、マークシートの楕円形のマークが印刷されたパンチカードで、導電性の特殊な鉛筆でマークを記入できるようになっていた(当時は光学式マーク認識ではなく、マーク部分に導電性があるかどうかで判別していた)。一般に何らかの初期情報がパンチされた状態でマークを記入する。例えば品名や品番をパンチしておき、棚卸し作業で在庫数をマークする。マークの読み取りも可能なカード穿孔装置に読み込ませると、マークした情報がその上にパンチされる。
アパチュアカードは、カードの右側に四角い大きめの穴が空いているパンチカードである。その穴に35mmのマイクロフィルムをはめ込む。例えば各種設計図の保管に使用された。パンチカード部分には図面の番号などをパンチしておく。完全なデジタル形式で保管するより便利な面もある。
1958年、IBMのサプライ品部門が発売したポータパンチ (Port-A-Punch) は、専用の印刷がされたIBM製パンチカードに人手で正確にパンチできる器具である。ポケットに入る大きさであり、どこでもパンチカードを作ることができる。棚卸し、伝票作成、統計調査などの現場で直接パンチカードに記録することを意図したもので、文書を作って別途キーパンチで入力するという手間を省くものである。しかし、きちんと貫通しないことがあり、読み取り時に問題を発生することがあった。
IBMは1970年代に、中小型コンピューターシリーズのSystem/3用に新しく96欄カード(丸穴)を発表した。IBM 5496 Data Recorder で穿孔と印字と確認ができ、IBM 5486 Card Sorter でソートできる。
カードに開ける丸穴は直径1mmと紙テープの穴より小さい。BCD文字(6ビット)とEBCDIC文字(8ビット)のビット構成をそのままパンチする(バイナリ方式)。BCDの場合は1段32欄で3段という形で使用し、1欄で1文字を表す。EBCDICの場合はBCDでの3段目のうち2行を1段目の6穴に加えて8ビットを表し、別の2行を2段目に加えて8ビットとしている。つまり、EBCDICでは64文字までしか表せない。
IBM96欄カードが広まるのに連れて、System/370系のコンピューターでもIBM 5425多機能カード装置(読取り・穿孔・印字・コレート)などによっても処理できるようになった。
レミントンランドは当初、ホレリスと同じ45欄の丸穴のパンチカードを採用していた。1928年にIBMが80欄カードを導入したことを受け、レミントンランドは1930年に45欄を上下2段に分けてそれぞれ1文字を表せるようにした。これを一般に90欄カードと呼ぶ。使用している文字コードは6ビットのバイナリコードである。
これも日本を含めて世界的に使われた。例えば、アメリカ合衆国ではニュージャージー・ターンパイクで、日本では名神高速道路で、UNIVACの90欄カードが料金支払い用に各ドライバーに渡されていた時期があった。
IBMのフレッド・M・キャロルは、標準的なパンチカードを製造する一連の輪転印刷機を開発した。1921年の機種は毎分400枚のカードを生産できた。1936年には全く新たな方式で毎分800枚を生産できる機種を開発した。キャロルのカード用輪転印刷機は、パンチカード製造に革命を起こした。1930年から1950年まで、キャロルの印刷機はIBM全体の利益の25%を生み出していた。
カード印刷機で使われていた印刷版はIBMのカードを丸めて円筒形にしたのと同じ大きさで、廃棄されたものはペン立てに使われたりしていた。様々なレイアウトの版があるので、コレクションの対象にもなっている。
IBMのマシンは顧客が買い取るのではなくリースするのが一般的だったため、IBMは当初純正カードのみを使うよう顧客に要求していた。IBMは事業をサービス業と認識しており、カードもマシンの一部だった。この件で1932年、アメリカ連邦政府がIBMを法的に訴えた。最高裁まで争ったが、IBMは敗訴。判決により、IBMはカードの仕様を指定することしかできないとされた。1955年にも同様の裁判があり、1962年までにIBMのパンチカード生産量をアメリカ全体の半分以下にするという和解がなされた。トーマス・J・ワトソンはパンチカード供給がIBMの最重要事業だと考えていたが、この和解にトーマス・J・ワトソン・ジュニアがサインすることで、IBMが新たな時代に入ったといえる。