FLOW-MATIC

FLOW-MATIC（フローマティック）は、世界初の英語に近い表記のデータ処理用プログラミング言語である。元の名称はB-0(Business Language version 0)であった。1955年から1959年にかけて、レミントンランドに所属していたグレース・ホッパーによってUNIVAC I用に開発された。この言語は、COBOLの開発に大きな影響を与えた。

開発 
ホッパーは、ビジネスデータ処理を行う顧客が数学的な表記法を不快に感じていることに気づいた。そのことを次のように書き残している。

1953年後半、彼女はデータ処理の問題を英語のキーワードを使用して表現することを提案したが、レミントンランド社の管理者はこの考えは実現不可能だと考えた。1955年初頭、彼女とそのチームはそのようなプログラミング言語の仕様を書き、プロトタイプを実装した。FLOW-MATICのコンパイラは1958年初頭に公開され、1959年にほぼ完成した。

革新と影響 
第一に、FLOW-MATICは、世界初のプログラミング言語である。

第二に、FLOW-MATICは、データの記述とその操作を明確に分離した最初のシステムである。実行可能な文とは異なり、データ定義言語は英語に似ていなかった。データ構造は事前に印刷されたフォームに記入することによって定義された。

FLOW-MATICは、COBOLの設計に大きな影響を与えた。FLOW-MATICの要素のうち、以下に掲げるものがCOBOLに組み込まれた。

 事前にファイルを定義し、ファイルとファイルに分けること。
 データ名の修飾（句、句）
 ファイルの操作における句
 表意定数（オリジナルはで、の数で精度を示した）
 プログラムを節に分割し、プログラムの様々な部分を分離すること。FLOW-MATICの節には、 （環境部(environment division)）、（データ部(data division)）、（手続き部(procedure division)）がある。

サンプルプログラム 
マーケティングパンフレットに記載されたFLOW-MATICのサンプルプログラムを以下に掲げる。

  ()  INPUT INVENTORY FILE-A PRICE FILE-B ; OUTPUT PRICED-INV FILE-C UNPRICED-INV
      FILE-D ; HSP D .
  ()  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 .
  ()  TRANSFER A TO D .
  ()  WRITE-ITEM D .
  ()  JUMP TO OPERATION 8 .
  ()  TRANSFER A TO C .
  ()  MOVE UNIT-PRICE (B) TO UNIT-PRICE (C) .
  ()  WRITE-ITEM C .
  ()  READ-ITEM A ; IF END OF DATA GO TO OPERATION 14 .
  ()  JUMP TO OPERATION 1 .
 ()  READ-ITEM B ; IF END OF DATA GO TO OPERATION 12 .
 ()  JUMP TO OPERATION 1 .
 ()  SET OPERATION 9 TO GO TO OPERATION 2 .
 ()  JUMP TO OPERATION 2 .
 ()  TEST PRODUCT-NO (B) AGAINST ; IF EQUAL GO TO OPERATION 16 ;
      OTHERWISE GO TO OPERATION 15 .
 ()  REWIND B .
 ()  CLOSE-OUT FILES C ; D .
 ()  STOP . (END)

このサンプルには、プログラムの実行可能文、すなわち節のみであることに注意。データ部およびは節で定義されるが、（前述のように）英語のような構文は使用していない。

脚注

参考文献 
 Hopper, Grace (1978). Keynote Address, History of Programming Languages I. ACM. pp. 16–20. 
 Hopper, Grace (1959). “Automatic programming: Present status and future trends”, Mechanisation of Thought Processes, National Physical Laboratory Symposium 10. Her Majesty's Stationery Office. pp 155–200, cited in 
 Sammet, Jean (1969). Programming Languages: History and Fundamentals. Prentice-Hall. p. 316–324. 
 Sammet, Jean (1978). "The Early History of COBOL", History of Programming Languages I. ACM. pp. 199–243. 
 Sperry Rand Corporation (1957) Introducing a New Language for Automatic Programming: Univac Flow-Matic

プログラミング言語
COBOL
グレース・ホッパー