|Designed by||Remington Rand, Grace Hopper|
FLOW-MATIC, originally known as B-0 (Business Language version 0), was the first English-like data processing language. It was developed for the UNIVAC I at Remington Rand under Grace Hopper during the period from 1955 until 1959.
Hopper had found that business data processing customers were uncomfortable with mathematical notation. In late 1953 she proposed that data processing problems should be expressed using English keywords, but Rand management considered the idea unfeasible. In early 1955, she and her team wrote a specification for such a programming language and implemented a prototype. The FLOW-MATIC compiler became publicly available in early 1958 and was substantially complete in 1959.
Innovations and Influence
First, FLOW-MATIC was the first programming language to express operations using English-like statements.
Second, FLOW-MATIC was the first system to distinctly separate the description of data from the operations on it. Its data definition language, unlike its executable statements, was not English-like; rather, data structures were defined by filling in pre-printed forms.
- Defining files in advance, and separating into
- Qualification of data-names (
IF END OF DATA (AT END)clause on file
- Figurative constant
ZZZ...ZZZ, where number of
Z's indicated precision).
- Dividing the program into sections, separating different parts of the program. Flow-Matic sections included
Directory(Data Division), and
(0) INPUT INVENTORY FILE-A PRICE FILE-B ; OUTPUT PRICED-INV FILE-C UNPRICED-INV FILE-D ; HSP D . (1) COMPARE PRODUCT-NO (A) WITH PRODUCT-NO (B) ; IF GREATER GO TO OPERATION 10 ; IF EQUAL GO TO OPERATION 5 ; OTHERWISE GO TO OPERATION 2 . (2) TRANSFER A TO D . (3) WRITE-ITEM D . (4) JUMP TO OPERATION 8 . (5) TRANSFER A TO C . (6) MOVE UNIT-PRICE (B) TO UNIT-PRICE (C) . (7) WRITE-ITEM C . (8) READ-ITEM A ; IF END OF DATA GO TO OPERATION 14 . (9) JUMP TO OPERATION 1 . (10) READ ITEM B ; IF END OF DATA GO TO OPERATION 12 . (11) JUMP TO OPERATION 1 . (12) SET OPERATION 9 TO GO TO OPERATION 2 . (13) JUMP TO OPERATION 2 . (14) TEST PRODUCT-NO (B) AGAINST ZZZZZZZZZZZZ ; IF EQUAL GO TO OPERATION 16 ; OTHERWISE GO TO OPERATION 15 . (15) REWIND B . (16) CLOSE-OUT FILES C ; D . (17) STOP . (END)
Note that this sample includes only the executable statements of the program, the
COMPILER section. The record fields
UNIT-PRICE would have been defined in the
DIRECTORY section, which did not use English-like syntax.
- Hopper (1978) p. 16.
- Sammet (1969) p. 316
- Sammet (1978) p. 204.
- Sperry Rand (1957) p. 7.
- Sammet (1969) p. 323.
- Hopper (1978) p. 18.
- Hopper, Grace (1978). Keynote Address, History of Programming Languages I. ACM. pp. 16–20. ISBN 0-12-745040-8
- Sammet, Jean (1969). Programming Languages: History and Fundamentals. Prentice-Hall. p. 316–324. ISBN 0-13-729988-5
- Sammet, Jean (1978). "The Early History of COBOL", History of Programming Languages I. ACM. pp. 199–243. ISBN 0-12-745040-8
- Sperry Rand Corporation (1957) Introducing a New Language for Automatic Programming: Univac Flow-Matic