プログラムが初めて呼び出されたときは、PERFORM ステートメントが実行されます。テスト 「N > 1」の結果が真であると、プログラムは呼び出し側プログラムに戻ります。
ただし、これは、段落 A が実行個所に戻らなかったために、PERFORM ステートメントが正常に完了し なかったことを意味します。段落 A の終わりにおけるコンパイラー生成メカニズムは、PERFORM ステートメントに戻るように「設定」されたままになっています。
したがって、プログラムが 2 回目に呼び出されたとき、ELSE 側に進み、N から 1 が引かれ、GO TO ステートメントによって制御が段落 A に渡ります。ただし、テスト「N > 1」の結果が偽である場合、PERFORM のメカニズムは設定されたままになっています。段落 A の終わりに達すると、段落 B に進むのではなく、PERFORM ステートメントの後の MOVE ステートメントに制御が「戻され」ます。
このような結果は、意図したものではありません。この問題は、以下のことがすべて発生した場合に発生する可能性があります。