FORTRAN 77の言語仕様
単純GO TO文 計算型GO TO文飛び先がリストされていて、その後にある変数の内容を評価し、その値によって飛び先にジャンプする。 割当て型GO TO文ASSIGN文で割り当てられた飛び先にジャンプする。 算術IF文値を評価し、その値がマイナス、0、プラスによって3方向にジャンプする。 論理IF文現在主流のプログラミング言語では、ごく一般的なif文。値の真偽値に基づき、真なら命令文を実行する。 CALL文サブルーチン副プログラムを呼び出す。 RETURN文サブルーチン副プログラムで、呼出し元に戻る。 DO文繰り返しを構成する。制御変数は整数型のみ。 CONTINUE文それ自身では何もしない。通常、DO文の終端を示すのに使われる。 STOP文プログラムの実行を終了する。 PAUSE文プログラムを一旦中止し、コンソール上にメッセージを出す。記述できるメッセージは数字のみ
しかしこの話は、1960年代前半のほぼ同時期にあった、二つの異なった事件の混同による、ある種の「都市伝説」である。
要約すると、
FORTRANの言語仕様が原因で生じたバグは、実機ではなくソフトウェアだけでの実行結果の異常として発覚し修正されたため、実際のロケット打ち上げには関係していない。これはマーキュリー計画において起きた。
宇宙機のロストにつながったプログラムのミスは言語仕様とは関係なく、プログラムするべき、として示された数式において、必要な線が欠けていたため発生した。これはマリナー1号において起きた。プログラミング(コーディング)に間違いは無くても、要求された仕様の時点でその中にバグがあるかもしれない、という教訓となっている。
DO文によるバグは、1963年、マーキュリー宇宙船の軌道計算ソフトウェアを開発中に、スタッフの一人が計算精度に問題があることに気づいた。コードを調査した結果、「DO 10 I=1.10」という行を発見した。それが原因で、ループにより近似の精度を高めるはずのコードが、ループしないため精度を高めることなく通り過ぎてしまっていた。これを「DO 10 I=1,10」と修正したところ、期待した精度が得られるようになった。