FLOW-MATIC, спочатку відома як B-0 (Ділова мова версія 0), була першою англомовною мовою системи обробки даних. Вона була розроблена для UNIVAC I Remington Rand під керуванням Ґрейс Гоппер у період з 1955 по 1959 рік. Мова сильно вплинула на розвиток COBOL.

Розвиток Гоппер виявила, що клієнтам обробки бізнес-даних було незручно математичне позначення. Наприкінці 1953 р. вона запропонувала, щоб проблеми обробки даних були виражені за допомогою англійських ключових слів, але керівництво Remington Rand вважало цю ідею неможливою. На початку 1955 р. вона і її команда написали специфікацію для такої мови програмування та реалізували прототип. Компонент FLOW-MATIC став відкрито доступним на початку 1958 р. І був практично завершений у 1959 р.

Інновації та вплив По-перше, FLOW-MATIC була першою мовою програмування, де використовувалася , подібна до речення англійською мовою.

По-друге, FLOW-MATIC була першою системою, яка чітко відокремила опис даних від операцій на них. Мова опису даних, на відміну від її виконуваних тверджень не була англійською; Швидше за все, структури даних були визначені шляхом заповнення попередньо надрукованих форм.

Flow-Matic мав ключовий вплив на дизайн мови COBOL, оскільки у практичному використанні на той час були тільки Flow-Matic і її безпосередній нащадок AIMACO. Кілька елементів Flow-Matic були включені в COBOL:

Визначення файлів заздалегідь та розділення на і . Кваліфікація імен даних( або положення). положення про операції з файлами . Образна константа (оригінально , де кількість вказує на точність). Розбиття програми на розділи, що розділяють різні частини програми. Flow-Matic мав наступні розділи (у дужках наведені COBOL-еквіваленти): (Environment Division), (Data Division), і (Procedure Division).

Приклад програми Зразок програми FLOW-MATIC:

(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)

Зверніть увагу, що цей зразок містить тільки виконувані оператори програми, тобто секцію . Поля записів та мають бути визначені у розділі , який не використовував англійський синтаксис.

Список команд Список команд які описані в керівництві користувача.

Закриває працю із бобіною. Порівнює значення полів в двох записах. Після перевірки вимог виконує перехід за вказаними адресами. Викликає виконання підпрограми Задає як записи даних співвідносяться із бобіною Безумовний перехід по логічному номеру команди Переносить значення поля одного запису в поле іншого запису. Читає наступний запис із бобіни Перемотує бобіну на початок Міняє параметри переходу в команді за вказаним логічним адресом Зупиняє виконання програми Перевіряє значення полів запису із константою. Після перевірки вимог виконує перехід за вказаними адресами. Переносить значення запису в інший запис, або його частину. Записує дані із поточного буферу запису на вихідний пристрій.

Примітки