computer programming in the punched card era student programmers at the technische hochschule in aachen germany in 1970 use ibm 026 keypunches punched card from a fortran program from the invention of computer programming languages up to the mid1970s many if not most computer programmers created edited and stored their programs line by line on punched cards the practice was nearly universal with ibm computers in the era a punched card is a flexible writeonce medium that encodes data most commonly 80 characters groups or decks of cards form programs and collections of data users could create cards using a desksized keypunch with a typewriterlike keyboard a typing error generally necessitated repunching an entire card in some companies programmers wrote information on special forms called coding sheets taking care to distinguish the digit zero from the letter o the digit one from the letter i eight from b two from z and so on these forms were then converted to cards by keypunch operators and in some cases checked by verifiers the editing of programs was facilitated by reorganizing the cards and removing or replacing the lines that had changed programs were backed up by duplicating the deck or writing it to magnetic tape work environment a typical corporate or university computer installation would have a suite of rooms with a large accessrestricted air conditioned room for the computer similar to todays server room and a smaller adjacent room for submitting jobs nearby would be a room full of keypunch machines for programmer use an ibm 407 accounting machine might be set up to allow newly created or edited programs to be listed printed out on fanfold paper for proof reading an ibm 519 might be provided to reproduce program decks for backup or to punch sequential numbers in columns 7380 in such mainframe installations known as closed shops programmers submitted the program decks often followed by data cards to be read by the program to a person working behind a counter in the computer room many computer installations used cards with the opposite corner cut sometimes no corner cut as job separators so that an operator could stack several job decks in the card reader at the same time and be able to quickly separate the decks manually when he removed them from the stacker these cards eg a jcl job card to start a new job were often prepunched in large quantities in advance this was especially useful when the main computer did not read the cards directly but instead read their images from magnetic tape that was prepared offline by smaller computers such as the ibm 1401 after running a program the computer operator would return the card deck and any hardcopy printed or punched output typically to one of a set of alphabetically labelled cubby holes based on the programmers last initial this was all batchmode processing as opposed to interactive processing overnight and even 24x6hour turnaround times were not uncommon during peak times it was common to stand in line waiting to submit a deck however on a lightly used system it was possible to make alterations and rerun a program in less than an hour dedicated programmers might stay up well past midnight to get a few quick turnarounds use of this expensive equipment was often charged to a users account a mainframe computer could cost millions of dollars and usage was measured in seconds per job smaller computers like the ibm 1000 1620 and 1130 were less expensive and often run as an open shop where programmers had use of the computer for a block of time a keypunch was usually located nearby for quick corrections identification and sequence a single program deck with individual subroutines marked the markings show the effects of editing as cards are replaced or reordered many early programming languages including fortran cobol and the various ibm assembler languages used only the first 72 columns of a card a tradition that traces back to the ibm 711 card reader used on the ibm 70470970907094 series especially the ibm 704 the first massproduced computer with floating point arithmetic hardware which could only read 72 of the 80 columns in one pass columns 7380 were ignored by the compilers and could be used for identification or a sequence number so that if the card deck was dropped it could be restored to its proper order using a card sorter depending on the programming language debugging output statements could be quickly activated and commented out by using cards with such statements punched with the comment character eg c in fortran in column 80 of the card turning the card endforend would put the c in the leading column which transformed the now backwards cards contents into a comment while leaving the physical card in place in deck an alternative imperfect but commonly employed technique to maintain proper card order was to draw one or more diagonal stripes across the top edge of all the cards in a deck in later years as punch card data was converted to magnetic tape files the sequence numbers were often used as a column in an array as an index value that can be correlated to time sequences such as in the natural sciences where the data on the cards were related to the periodic output of a measuring device such as water stage level recorders for rivers and streams in hydrology or temperatures in meteorology entire vaults full of card decks could be reduced to much smaller racks of ninetrack tapes unit record equipment history fisk dale 2005 programming with punched cards a programmers memories of learning the craft in 1973 pdf retrieved 20081111 article about the programming culture that developed around use of the punched card following fisks experience of learning the craft from people around him also how the concept of programming changed significantly as the computer began to multitask and store programs internally on disk observing how the programmers sense of possessionownership of a program was somewhat relinquished after he no longer physically held it in his hands but trusted the computer to keep it safe for him columbia university computing history the columbia university self service inputoutput area e i organick a fortran iv primer addisonwesley 1966 ibm punched card data processing principles 1961 hosted at wwwcomputercollectorcom gallery a box of punched cards with several program decks a pad of fortran coding forms card formatted for ibm 1620 assembly language cards would sometimes jam in the reader requiring one or more to be repunched listing of a large computer program on continuous form paper bound in a printout binder ibm keypunch drum card used to program tabs and skips an ibm 519 reproducing punch with plugboard control panel open it would be closed during operation ibm 1402 high speed card reader and punch used in larger installations and typically run by an operator ibm 1442 medium speed card reader and punch used on many smaller computers such as the ibm 1130 