構造化定理
1980年代にIBMの研究員ハーラン・ミルズ(Harlan Mills)は、COBOL Structuring Facility の開発を監督した。COBOL Structuring Facility はCOBOLコードへの構造化アルゴリズムを応用した。ミルズの変換は各手続に対して以下の手順を必要とした。
手続きの中の基本ブロック(入口と出口がそれぞれ1つしかないコード)を見つけ出す。
各ブロックの入口にユニークなラベル(訳注:ここで言うラベルは数値である)を割り当てる。そして、ブロックの出口に接続するべき入口のラベルを付ける。その手続きから戻るラベルに0を使い、その手続きの入口のラベルに1を使う。
その手続きを基本ブロックに分解する。
基本ブロックの1つしかない出口の行先が基本ブロックの場合、その出口に基本ブロックを再接続する。
その手続きの新しい変数を宣言する(参照のために L と呼ぶ)
余っている未接続の出口のそれぞれに次の行先(入口)のラベルの値をLに設定する文を追加する。
結果として生じるプログラムを組合せて、Lによって指定された入口のラベルの値に対応したプログラムを実行する選択文にする。
Lが0ではない限り、この選択文を実行するループを構築する(つまり、Lが0になるとループが終了し、手続きから戻ることになる)。
Lを1に初期化して、そのループを実行するシーケンスを構築する(前述のように1は手続きの入口を意味する)。
この構造は選択文のいくつかの選択肢をサブルーチンにすることによって改善できることに注意すること。