Flowcharts
A flowchart is a diagram that provides an overview of a program’s processing sequence. To work out and confirm a program’s overall structure and sequence, a programmer will draw a flowchart on graph paper before actually writing the program in the programming language. Especially when coding in a language with detailed instructions, such as an assembler language, where even the programmer has difficulty understanding what the instructions are describing, a flowchart can be a tremendous help to programmers as a coding reference and for getting an overall sense of the program. The JIS X0121:1986 standard “Documentation symbols and conventions for data, program and system flowcharts, program network charts and system resources charts” defines a program flowchart as “a diagram that represents a series of operations in a program.”
Despite this, flowcharts are rarely used today for a number of reasons: the punched cards and punched tape defined in JIS X0121:1986 are now obsolete, object-oriented languages now rival the procedural-oriented languages that suit flow-charting, and programs have become too large and complex to be represented on flowcharts.
The tools for making a flowchart are graph paper, mechanical pencils, templates, eraser shields, erasers, and brushes.
Coding sheets
A coding sheet is a type of preprinted form with ruled lines for writing down a program. A coding sheet generally has 80 boxes per line to enter statements that will be punched on punched cards. Coding sheets are language specific: the ruled lines are designed to fit the syntax of the target language, such as assembler, Fortran, Cobol, or PL/I.
Almost no program developers in the 1960s or 1970s had direct access to a computer terminal or a text editor on which to write programs. Instead, the programmer wrote out the program on coding sheets and took them to a card punching room at their institution’s computer center where they created the program as a punched card deck. After this, the programmer would submit the program deck to be run on the center’s computer. Even if the programmer’s lab did have its own computer, rarely were there any text editors to enter a program on. Virtually all inputs were in the form of punched cards or punched tape. Thus, program creation and program execution were essentially separate operations. Coding sheets arose out of necessity because of the computing environments of the time.
Punched cards
The Hollerith card was the first practical media for entering document data and processing data and was used to tabulate the results of U.S. censuses. Hollerith cards were 3.25 inches by 7.375 inches — the size adopted later by computer punched cards and why punched cards are sometimes called Hollerith cards.
The arrangement and number of holes has changed over the years. The first Hollerith cards used for the 1890 U.S. census had eight rows and 22 columns of round holes. The 1900 census cards had 10 rows and 24 columns, and the 1910 census cards had 12 rows and 27 columns. IBM, in 1928, produced a card with 12 rows and 80 columns that had rectangular holes instead of round holes. These “IBM cards” were later utilized as computer input media and became an important standard in computer storage media.
Large computer centers at universities and other institutions had rows of card punches. People punched programs and data written on coding sheets onto cards that they then submitted to the center to run. The biggest drawback of the cards was their handling. Since each statement needed its own card, a program and its data could easily run into hundreds or thousands of cards. If a program deck were dropped — they were generally transported in cardboard boxes — and the cards got out of order, it was a massive task to reorder them. Cards would also frequently jam in the card reader. Overall, they were nuisance.
Punched cards began to disappear with the emergence in the 1970s of time-sharing systems (TSS), which let programmers directly enter programs from terminals and store programs on hard disks.
Punched tape
Punched tape was a media used for recording programs or data. Where punched cards carried only one statement per card, punched tape recorded multiple sequential statements. Each line, perpendicular to the tape’s forward direction, had eight holes for data that could record one byte, with the presence or absence of a hole indicating the value of the corresponding bit. To transport the tape, perforations were made in the tape dividing the eight data holes into a group of five and a group of three.
Tape punches and tape readers were sold cheaply and were not as bulky as card punches and readers. Tape punches were often attached to teletypewriters so that ASCII codes of characters could be entered from a keyboard. There were even small optical tape readers. For these reasons, punched tape was widely used particularly as an input and recording media for small computers.
The shortcomings of punched tape included the difficulty in inserting a new statement, which was quite easy to do with punched cards. Using a teletypewriter with a reader and a punch, the original tape would have to be copied on a new tape to the insertion point, the new statement entered from the keyboard, and the remainder of the original tape copied. Because the copy-edit-copy process was too inefficient to fix a single byte in a long tape, devices were created that edited tapes by filling in holes and reopening them as appropriate in one-byte increments.
While punched tape would never get out of sequence, unlike punched cards, the tape would often pile up in a heap on the other side of the punch or reader. A take-up reel was necessary, but the tape would frequently break while being reeled in. To repair breaks, mending tape and jigs were used to accurately fasten tapes back together again.