

コンピュータプログラミング言語が発明されてから1970年代半ばまで、ほとんどのコンピュータプログラマーは、プログラムをパンチカードに一行ずつ作成、編集、保存していた。
パンチカードは、データをエンコードする柔軟性のある書き込み専用媒体で、一般的には80文字まで記録できます。カードのグループ、つまり「デッキ」は、プログラムやデータの集合体となります。この用語はパンチカードとほぼ同義で使われることが多いですが、違いは、未使用のカードは「パンチカード」、穴を開けて情報がエンコードされたカードは「パンチカード」と呼ばれる点です。この記事では、便宜上、どちらの場合も「パンチカード」という用語を使用します。
プログラマーはまず、コーディングシートと呼ばれる特別な用紙にプログラムを記述することが多かった。数字のゼロと文字のO、数字の1と文字のI、8とB、2とZなどを区別するために、「スラッシュ付きゼロ」などのローカルな慣例を用いることが重要だった。これらの用紙はキーパンチオペレーターによって取り扱われ、IBM 026(後にIBM 029 )などのキーパンチ機を使ってパンチされた。多くの場合、別のキーパンチオペレーターがそのパンチされた用紙を受け取り、コーディングシートから再度パンチを行ったが、その際にはIBM 059などの「検証機」を用いて、最初のパンチにエラーがないことを確認した。
入力ミスがあった場合は、通常、カード全体を再パンチする必要がありました。プログラムの編集は、カードを再編成し、変更された行を削除または置き換えることで容易に行えました。プログラムのバックアップは、カードデッキを複製するか、磁気テープに書き込むことで行われました。
小規模な組織では、プログラマーが自分でパンチング作業を行うこともあり、いずれの場合も、デッキにちょっとした変更を加えるためにキーパンチを利用できることが多かった。
以下の説明は、すべてIBM製の機器を使用している環境(「ショップ」とは、プログラマー用語でプログラミング作業場所を指す)について述べています。他のメーカーのメインフレーム(またはミニコンピュータ)を使用している環境では、NCR、ICL、ヒューレット・パッカード(HP)、コントロール・データなど、さまざまなメーカーの同様の機器が使われていました。ただし、キーパンチはIBM 029を使用していたはずです。IBMの巨大な規模と業界における影響力は、多くの慣習が他のベンダーにも採用される原因となったため、以下の例は、IBM以外の環境であっても、ほとんどの場所でよく似ています。
典型的な企業や大学のコンピュータ設備は、複数の部屋から構成されており、コンピュータ用の広々とした、アクセスが制限された空調完備の部屋(今日のサーバー室に相当)と、ジョブ投入用のより小さく静かな隣接部屋があった。近くには、プログラマが使用するキーパンチ機が並ぶ部屋があった。IBM 407会計機が設置され、新しく作成または編集されたプログラムの一覧(扇形用紙に印刷)を作成して校正できるようになっていたかもしれない。IBM 519は、バックアップ用のプログラムデッキを複製したり、73~80 列に連番をパンチしたりするために提供されていたかもしれない。
「クローズドショップ」と呼ばれるこうしたメインフレームの設置環境では、プログラマーはプログラムデッキ(多くの場合、プログラムが読み込むデータカードもそれに続く)をコンピュータ室のカウンターの後ろにいる担当者に提出していた。ピーク時には、デッキを提出するために列に並んで待つのが一般的だった。この問題を解決するために、カードリーダーをコンピュータ室の外に再設置(または最初から設置)して、プログラマーが「セルフサービス」でジョブを提出できるようにした。
多くのコンピュータ設備では、反対側の角がカットされたカード(場合によっては角がカットされていないカード)を「ジョブセパレータ」として使用し、オペレーターがカードリーダーに複数のジョブデッキを同時に積み重ね、スタッカーから取り出すときにデッキを手動で素早く分離できるようにしていました。これらのカード(たとえば、新しいジョブを開始するためのJCL「JOB」カード)は、事前に大量にパンチされることがよくありました。[ 1 ]これは、メインコンピュータがカードを直接読み取らず、代わりにIBM 1401などの小型コンピュータによってオフラインで準備された磁気テープからカードのイメージを読み取る場合に特に便利でした。カードを読み込んだ後、コンピュータオペレーターはカードデッキを、通常はプログラマの姓の頭文字に基づいてアルファベット順にラベル付けされた一連の仕切り棚のいずれかに戻しました。プログラムはバッチ処理モードで実行されていたため、印刷物やパンチ穴付きの出力物が完成してこれらの仕切り棚に保管されるまでにはかなりの時間がかかったかもしれない。しかし、使用頻度の低いシステムであれば、1時間以内にプログラムの変更と再実行を行うことが可能だった。
熱心なプログラマーは、迅速な納品を実現するために、深夜を過ぎても作業を続けることもあった。こうした高価な機器の使用料は、多くの場合、利用者のアカウントに請求された。メインフレームコンピュータは数百万ドルもする高価なもので、使用時間はジョブごとに秒単位で計測された。
IBM 1620や1130のような小型コンピュータ、そしてPDP-11のようなミニコンピュータは安価で、プログラマが一定時間コンピュータを独占的に使用できる「オープンショップ」方式で運用されることが多かった。これらの小型コンピュータの多くはパンチテープで動作していたものの、通常は近くにキーパンチが設置されており、迅速な修正が可能だった。

FORTRAN、COBOL、各種IBMアセンブラ言語など、初期のプログラミング言語の多くは、カードの最初の72列のみを使用していました。これは、 IBM 704/709/7090/7094シリーズ(特に浮動小数点演算ハードウェアを搭載した最初の量産型コンピュータであるIBM 704 )で使用されていたIBM 711カードリーダーに由来する慣習で、このリーダーは80列のうち72列しか一度に読み取ることができませんでした。
73~80列目はコンパイラによって無視され、識別番号やシーケンス番号として使用できたため、カードデッキが落とされた場合でも、カードソーターを使用して正しい順序に戻すことができました。プログラミング言語によっては、デバッグ出力ステートメントをすばやく有効化して「コメントアウト」することができました。これは、カードの80列目にコメント文字( Fortranでは「C」など)がパンチされたカードを使用することで可能でした。カードを上下逆さまにすると、「C」が先頭の列に配置され、カードの内容がコメントに変換され、カード自体はデッキ内の所定の位置に残りました。
カードの正しい順番を維持するための、不完全ではあるものの一般的に用いられている代替手法として、デッキ内のすべてのカードの上端に1本以上の斜めの線を引く方法があった。
後年、パンチカードのデータが磁気テープファイルに変換されるようになると、シーケンス番号は時間系列と関連付けられるインデックス値としてよく使われるようになった。例えば、カード上のデータは、水文学における河川の水位記録計や気象学における気温など、測定装置の出力である可能性がある。カードデッキでいっぱいの保管庫全体が、はるかに小型の9トラックテープラックに収まるようになった。