Computer programming in the punched card era

Last updated
Student programmers at the Technische Hochschule in Aachen, West Germany in 1970 using IBM 026 keypunches. Bundesarchiv B 145 Bild-F031434-0006, Aachen, Technische Hochschule, Rechenzentrum.jpg
Student programmers at the Technische Hochschule in Aachen, West Germany in 1970 using IBM 026 keypunches.
Punched card from a Fortran program. FortranCardPROJ039.agr.jpg
Punched card from a Fortran program.

From the invention of computer programming languages up to the mid-1970s, most computer programmers created, edited and stored their programs line by line on punch cards.

Contents

Punched cards

A punched card is a flexible write-once medium that encodes data, most commonly 80 characters. Groups or "decks" of cards form programs and collections of data. The term is often used interchangeably with punch card, the difference being that an unused card is a "punch card," but once information had been encoded by punching holes in the card, it was now a "punched card." For simplicity, this article will use the term punched card to refer to either.

Often programmers first wrote their program out 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 using local conventions such as the "slashed zero". These forms were then taken by keypunch operators, who using a keypunch machine such as the IBM 026 (later IBM 029) punched the deck. Often another keypunch operator would then take that deck and re-punch from the coding sheets – but using a "verifier" such as the IBM 059 that checked that the original punching had no errors.

A typing error generally necessitated re-punching an entire card. 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.

In smaller organizations programmers might do their own punching, and in all cases would often have access to a keypunch to make small changes to a deck.

Work environment

The description below describes an all-IBM shop (a "shop" is programmer jargon for a programming site) but shops using other brands of mainframes (or minicomputers) would have similar equipment although because of cost or availability might have different manufacturer's equipment, e.g. an NCR, ICL, Hewlett-Packard (HP) or Control Data shop would have NCR, ICL, HP, or Control Data computers, printers and so forth, but have IBM 029 keypunches. IBM's huge size and industry footprint often caused many of their conventions to be adopted by other vendors, so the example below is fairly similar to most places, even in non-IBM shops.

A typical corporate or university computer installation would have a suite of rooms, with a large, access-restricted, air-conditioned room for the computer (similar to today's server room) and a smaller quieter 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 fan-fold paper) for proofreading. An IBM 519 might be provided to reproduce program decks for backup or to punch sequential numbers in columns 73-80.

In such mainframe installations, known as "closed shops," [lower-alpha 1] 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. During peak times, it was common to stand in line waiting to submit a deck. To solve that problem, the card reader could be reinstalled (or initially installed) outside of the computer room to allow programmers to do "self-service" job submission.

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 they removed them from the stacker. These cards (e.g., a JCL "JOB" card to start a new job) were often pre-punched in large quantities in advance. [1] 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 reading the cards in, the computer operator would return the card deck – typically to one of a set of alphabetically labelled cubby holes, based on the programmer's last initial. Because programs were run in batch-mode processing it might be a considerable time before any hardcopy printed or punched output was produced, and put into these same cubby holes – 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 user's account. A mainframe computer could cost millions of dollars and usage was measured in seconds per job.

Smaller computers like the IBM 1620 and 1130, and minicomputers such as the PDP-11 were less expensive, and often run as an "open shop", where programmers had exclusive use of the computer for a block of time. A keypunch was usually located nearby for quick corrections – although many of these smaller machines ran from punched tape.

Identification and sequence

A single program deck, with individual subroutines marked. The markings show the effects of editing, as cards are replaced or reordered. Punched card program deck.agr.jpg
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 704/709/7090/7094 series (especially the IBM 704, the first mass-produced computer with floating-point arithmetic hardware), which could only read 72 of the 80 columns in one pass.

Columns 73-80 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 (e.g., 'C' in Fortran) in column 80 of the card; turning the card end-for-end would put the 'C' in the leading column, which transformed the now backwards card's 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 nine-track tapes.

See also

Footnotes

  1. A computer installation referred to as a "closed shop" should not be confused with the usual meaning for a closed shop, a worksite requiring membership in a union. Most programmers were salaried and were not unionized.

Related Research Articles

<span class="mw-page-title-main">Fortran</span> General-purpose programming language

Fortran is a third generation, compiled, imperative programming language that is especially suited to numeric computation and scientific computing.

<span class="mw-page-title-main">Punched card</span> Paper-based recording medium

A punched card is a piece of card stock that stores digital data using punched holes. Punched cards were once common in data processing and the control of automated machines.

<span class="mw-page-title-main">IBM 1620</span> Small IBM scientific computer released in 1959

The IBM 1620 was announced by IBM on October 21, 1959, and marketed as an inexpensive scientific computer. After a total production of about two thousand machines, it was withdrawn on November 19, 1970. Modified versions of the 1620 were used as the CPU of the IBM 1710 and IBM 1720 Industrial Process Control Systems.

<span class="mw-page-title-main">IBM 1401</span> 1960s decimal computer

The IBM 1401 is a variable-wordlength decimal computer that was announced by IBM on October 5, 1959. The first member of the highly successful IBM 1400 series, it was aimed at replacing unit record equipment for processing data stored on punched cards and at providing peripheral services for larger computers. The 1401 is considered by IBM to be the Ford Model-T of the computer industry due to its mass appeal. Over 12,000 units were produced and many were leased or resold after they were replaced with newer technology. The 1401 was withdrawn on February 8, 1971.

Job Control Language (JCL) is a name for scripting languages used on IBM mainframe operating systems to instruct the system on how to run a batch job or start a subsystem. The purpose of JCL is to say which programs to run, using which files or devices for input or output, and at times to also indicate under what conditions to skip a step. Parameters in the JCL can also provide accounting information for tracking the resources used by a job as well as which machine the job should run on.

<span class="mw-page-title-main">Spooling</span> Form of multitasking in computers

In computing, spooling is a specialized form of multi-programming for the purpose of copying data between different devices. In contemporary systems, it is usually used for mediating between a computer application and a slow peripheral, such as a printer. Spooling allows programs to "hand off" work to be done by the peripheral and then proceed to other tasks, or to not begin until input has been transcribed. A dedicated program, the spooler, maintains an orderly sequence of jobs for the peripheral and feeds it data at its own rate. Conversely, for slow input peripherals, such as a card reader, a spooler can maintain a sequence of computational jobs waiting for data, starting each job when all of the relevant input is available; see batch processing. The spool itself refers to the sequence of jobs, or the storage area where they are held. In many cases, the spooler is able to drive devices at their full rated speed with minimal impact on other processing.

<span class="mw-page-title-main">IBM 1130</span> 16-bit IBM minicomputer introduced in 1965

The IBM 1130 Computing System, introduced in 1965, was IBM's least expensive computer at that time. A binary 16-bit machine, it was marketed to price-sensitive, computing-intensive technical markets, like education and engineering, succeeding the decimal IBM 1620 in that market segment. Typical installations included a 1 megabyte disk drive that stored the operating system, compilers and object programs, with program source generated and maintained on punched cards. Fortran was the most common programming language used, but several others, including APL, were available.

<span class="mw-page-title-main">Unit record equipment</span> Electromechanical machines which processed data using punch cards

Starting at the end of the nineteenth century, well before the advent of electronic computers, data processing was performed using electromechanical machines collectively referred to as unit record equipment, electric accounting machines (EAM) or tabulating machines. Unit record machines came to be as ubiquitous in industry and government in the first two-thirds of the twentieth century as computers became in the last third. They allowed large volume, sophisticated data-processing tasks to be accomplished before electronic computers were invented and while they were still in their infancy. This data processing was accomplished by processing punched cards through various unit record machines in a carefully choreographed progression. This progression, or flow, from machine to machine was often planned and documented with detailed flowcharts that used standardized symbols for documents and the various machine functions. All but the earliest machines had high-speed mechanical feeders to process cards at rates from around 100 to 2,000 per minute, sensing punched holes with mechanical, electrical, or, later, optical sensors. The operation of many machines was directed by the use of a removable plugboard, control panel, or connection box. Initially all machines were manual or electromechanical. The first use of an electronic component was in 1937 when a photocell was used in a Social Security bill-feed machine. Electronic components were used on other machines beginning in the late 1940s.

<span class="mw-page-title-main">Keypunch</span> Device for punching holes into paper cards

A keypunch is a device for precisely punching holes into stiff paper cards at specific locations as determined by keys struck by a human operator. Other devices included here for that same function include the gang punch, the pantograph punch, and the stamp. The term was also used for similar machines used by humans to transcribe data onto punched tape media.

<span class="mw-page-title-main">IBM System/3</span> IBM midrange computer (1969–1985)

The IBM System/3 was an IBM midrange computer introduced in 1969, and marketed until 1985. It was produced by IBM Rochester in Minnesota as a low-end business computer aimed at smaller organizations that still used IBM 1400 series computers or unit record equipment. The first member of what IBM refers to as their "midrange" line, it also introduced the RPG II programming language. It is the first ancestor in the product line whose current version is the IBM i series and includes the highly successful AS/400.

<span class="mw-page-title-main">IBM 7090/94 IBSYS</span> Early-to-mid 1960s operating system for the scientific line of IBM mainframes

IBSYS is the name of a discontinued tape-based operating system that IBM supplied with its IBM 709, IBM 7090 and IBM 7094 computers, and of a significantly different, though similar operating system provided with IBM 7040 and IBM 7044 computers. IBSYS was based on FORTRAN Monitor System (FMS) and Bell Labs' "BESYS" rather than the SHARE Operating System. IBSYS directly supported several older computer language compilers and assemblers on the $EXECUTE card: 9PAC, FORTRAN and IBSFAP. Newer language processors ran under IBJOB.

<span class="mw-page-title-main">Honeywell 200</span> Family of mainframe computers

The Honeywell 200 was a character-oriented two-address commercial computer introduced by Honeywell in December 1963, the basis of later models in Honeywell 200 Series, including 1200, 1250, 2200, 3200, 4200 and others, and the character processor of the Honeywell 8200 (1968).

A computer operator is a role in IT which oversees the running of computer systems, ensuring that the machines, and computers are running properly. The job of a computer operator as defined by the United States Bureau of Labor Statistics is to "monitor and control ... and respond to ... enter commands ... set controls on computer and peripheral devices. This Excludes Data Entry."

The Houston Automatic Spooling Priority Program, commonly known as HASP, is an extension of the IBM OS/360 operating system and its successors providing extended support for "job management, data management, task management, and remote job entry."

Inforex Inc. corporation manufactured and sold key-to-disk data entry systems in the 1970s and mid-1980s. The company was founded by ex-IBM engineers to develop direct data entry systems that allowed information to be entered on terminals and stored directly on disk drives, replacing keypunch machines using punched cards or paper tape, which had been the dominant tools for data entry since the turn of the twentieth century.

MONECS was a computer operating system with BASIC, COBOL, FORTRAN, Pascal interpreters, plus machine language facility. Specifically designed for computer science education in Australian secondary schools and at the university undergraduate level. Alternative designations were DEAMON or SCUBA systems.

The GEC 2050 was an 8-bit minicomputer produced during the 1970s, initially by Marconi Elliott Computer Systems of the UK, before the company renamed itself GEC Computers Limited. The first models were labeled MECS 2050, before being renamed GEC 2050.

<span class="mw-page-title-main">Punched card input/output</span> Computer peripheral device

A computer punched card reader or just computer card reader is a computer input device used to read computer programs in either source or executable form and data from punched cards. A computer card punch is a computer output device that punches holes in cards. Sometimes computer punch card readers were combined with computer card punches and, later, other devices to form multifunction machines.

<span class="mw-page-title-main">IBM 711</span> Punched card reader for early computers

The IBM 711 was a punched card reader used as a peripheral device for IBM mainframe vacuum tube computers and early transistorized computers. Announced on May 21, 1952, it was first shipped with the IBM 701. Later IBM computers that used it were the IBM 704, the IBM 709, and the transistorized IBM 7090 and 7094.

The Librarian is a version control system and source code management software product originally developed by Applied Data Research for IBM mainframe computers. It was designed to supplant physical punched card decks as a way of maintaining programs, but kept a card model in terms of its interface. During the 1970s and 1980s it was in use at thousands of IBM mainframe installations and was one of the best-selling software products in the computer industry.

References

  1. da Cruz, Frank (December 2019). "IBM Punch Cards". Columbia University Computing History. Columbia University.