Punch Cards
A punch card is a piece of card stock with holes in it, and almost everything strange about the code it carries comes from that one fact. Type a line, or punch the holes yourself and see what character you made.
The card
What a reader gets back
One column, close up
The card is 80 columns across, which on a phone is about four pixels each. That is honestly what a punch card looks like, so here is the column you picked, enlarged. The holes are buttons: punch and unpunch them and watch the character above the column appear, change, or stop being a character at all.
- Column
- 1
- Character
- blank
- Zone punch
- none
- Digit punch
- none
- Holes
- 0
- FORTRAN field
- none
Why a column never holds more than three holes
The twelve rows are not numbered one to twelve. From the top they run 12, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. The top three are the zone rows and the bottom nine are the digit rows, and a character is a zone plus a digit: A is 12 and 1, J is 11 and 1, S is 0 and 2. A bare digit is one hole. A space is no holes at all.
That arrangement is not an aesthetic choice. Every hole removes material, and a column cut too far through tears in the feed rollers. Holding the whole character set inside three holes per column is what let the card survive being read. Punch a fourth hole into any column above and the page will say so.
Punch all twelve rows in all eighty columns and you get what the era called a lace card: real, made as a prank, and reliably fatal in a reader.
Why FORTRAN starts in column 7
One card was one line, so the card's eighty columns became the line's eighty columns, and the fields on the card became the syntax. Columns 1 to 5 held a statement label. Column 6 marked a continuation of the line before it. The statement itself ran from 7 to 72. Columns 73 to 80 held a sequence number, because a dropped deck was a real event with a real recovery: feed it through a sorter and get your program back in order. Programs that skipped the sequence number were not recoverable.
The eighty-column limit that still shows up in style guides is this card. So is the seventy-two column one.
The three-hole rule is a budget, and it is not the first one. Baudot's tape had been paying for its alphabet in punched holes since the 1870s, where the cost was wear on the punch rather than a torn card. Both ran short of single-hole codes and both answered by combining two things at once: the tape shifts in time, and a card column puts a zone punch and a digit punch in the same space.
What is real here, and what is not
The encoding is real, and it runs both ways
The character set is the IBM 029 keypunch set, written into the source as one twelve-bit string per character in physical row order, so it can be checked line by line against the published table. The holes are the only state this page keeps: the character shown above each column is looked up backwards out of that same table from whatever holes are actually punched. Type a line and punch a hole by hand and the two cannot disagree, because there is no second copy of the text. The three-hole claim is verified against the table when the page loads rather than asserted in prose.
The card size is real; the hole pitch is close
7-3/8 by 3-1/4 inches, 80 columns, 12 rows, rectangular holes: all to spec. The spacing used to lay the grid out, 0.087 inches across and 0.25 inches down, is the commonly cited figure and fits correctly inside the real card, but it is not traced from an IBM dimensional drawing. Treat the drawing as accurate in proportion, not as a reproduction.
The printed digits are texture, not a facsimile
A real card had its row digit printed at every one of the 800 digit positions, and the column numbers printed along the bottom edge for all eighty. Both are here, but at 80 columns the per-position digits are around four pixels, so they read as the grain of the stock rather than as numbers, and only every tenth column number is printed. The row labels down the left edge are this page's addition; a real card did not need them because the printed grid did the same job.
Lowercase is silently uppercased, the way the machine did
An 029 keyboard had no lowercase, so typing lowercase here punches the capital. That is the machine's behaviour, not a shortcut. Characters genuinely outside the set are refused and named rather than approximated. Typing straight onto the card, one key per column, also has no backspace, for the same reason the machine had none: the only fix was to scrap the card and punch a new one.
Nothing here jams, and nothing here is a deck
A lace card buckles and stops a reader. This page draws the card and says so; it does not simulate the feed, the rollers, or the jam. The card does not warp, wear, or absorb humidity, all of which mattered. And this is one card: the deck, the sorter, and what happened when you dropped one are a bigger subject.
This is the keypunch, not the shop
Punching a card was the fast part. The slow part was everything after it: the deck, the job, the wait, and the printout that told you about the missing comma. That is a machine of its own and it is on the studio's list.
Sources
- Douglas W. Jones, Punched Card Codes, University of Iowa. The 029 chart used for the encoding table.
- barrettotte/punchit, an IBM 029 encoder whose table was used as an independent cross-check. The two agree on every character.
- Sinclair Target, The IBM 029 Card Punch. Row order, the absence of lowercase, the corner cut, and the fact that a mistake meant punching a new card.
- IBM, The punched card. The 1928 80-column format and card dimensions.
- Columbia University Computing History, on card decks, sequence numbers in columns 73 to 80, and sorters.
- Arnold Reinhold, Punched card program deck, Wikimedia Commons, CC BY-SA 3.0. A 1969 IBM 5081 deck; this page's card colour is sampled from it.