FLOW-MATIC
| Company type | Programming language |
|---|---|
| Industry | Computer software |
| Founded | 1955 |
| Founder | Grace Hopper |
| Headquarters | United States |
| Products | FLOW-MATIC programming language |
FLOW-MATIC, originally named B-0 (Business Language version 0), represents the earliest data processing language designed with English-like syntax. Created for the UNIVAC I at Remington Rand under the leadership of Grace Hopper between 1955 and 1959, it played a pivotal role in shaping the development of COBOL.
Development
Hopper identified that business professionals were hesitant to use mathematical symbols: In late 1953, she suggested framing data processing tasks using English keywords, although this concept was initially dismissed by Rand’s management. By early 1955, her team had defined and produced a prototype of such a language. The FLOW-MATIC compiler was released to the public in early 1958 and reached near completion by 1959.
Innovations and influence
Drawing inspiration from the Laning and Zierler system, which was the first to parse algebraic expressions, FLOW-MATIC broke new ground by allowing operations to be written as English-like statements rather than symbolic code. It also established a distinct separation between data definitions and procedural instructions: data structures were specified through pre-printed forms instead of using English-style syntax.
FLOW-MATIC and its successor AIMACO had a direct impact on COBOL, introducing features such as:
- Standardized Input & Output Files along with printed output categories (INPUT, OUTPUT, High Speed Printer).
- Qualification of data names with or clauses.
- Application of conditions in file operations.
- The figurative constant , initially depicted by multiple characters indicating precision.
- Division of programs into sections like <syntaxhighlight lang="text" class="" style="" inline="1">Computer</syntaxhighlight> (Environment Division), <syntaxhighlight lang="text" class="" style="" inline="1">Directory</syntaxhighlight> (Data Division), and <syntaxhighlight lang="text" class="" style="" inline="1">Compiler</syntaxhighlight> (Procedure Division).
Sample Code
An example FLOW-MATIC program:
(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 ; IF EQUAL GO TO OPERATION 16 ; OTHERWISE GO TO OPERATION 15 . (15) REWIND B . (16) CLOSE-OUT FILES C ; D . (17) STOP . (END)
Sample Notes
- This example shows only the executable instructions within the COMPILER section. The record fields PRODUCT-NO and UNIT-PRICE would have been declared in the DIRECTORY section, which did not employ English-like syntax.
- File references use their letter suffixes; for instance, FILE-A is denoted as A in the code.
- Operations are sequentially numbered and executed in order unless redirected by control commands such as JUMP.
- The program terminates at the highest numbered operation.
- A comprehensive description of FLOW-MATIC is provided in the manual entitled FLOW-MATIC PROGRAMMING SYSTEM.
References
- Hopper, Grace (1978). Keynote Speech, History of Programming Languages I. ACM. pp.16–20.
- Hopper, Grace (1959). “Automatic programming: Current status and anticipated developments”, Mechanisation of Thought Processes, National Physical Laboratory Symposium.
- Sammet, Jean (1969). Programming Languages: History and Fundamentals. Prentice-Hall. pp.316–324.
- Sammet, Jean (1978). "COBOL’s Early Development", History of Programming Languages I. ACM. pp.199–243.
- Sperry Rand Corporation (1957). Introducing a New Language for Automatic Programming: Univac Flow-Matic.
- Remington Rand Univac, a Division of Sperry Rand Corporation (1957). FLOW-MATIC PROGRAMMING SYSTEM.