Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 コンパイラーおよびランタイム 移行ガイド


CMPR2

プログラムが初めて呼び出されたときは、PERFORM ステートメントが実行されます。テスト 「N > 1」の結果が真であると、プログラムは呼び出し側プログラムに戻ります。

ただし、これは、段落 A が実行個所に戻らなかったために、PERFORM ステートメントが正常に完了し なかったことを意味します。段落 A の終わりにおけるコンパイラー生成メカニズムは、PERFORM ステートメントに戻るように「設定」されたままになっています。

したがって、プログラムが 2 回目に呼び出されたとき、ELSE 側に進み、N から 1 が引かれ、GO TO ステートメントによって制御が段落 A に渡ります。ただし、テスト「N > 1」の結果が偽である場合、PERFORM のメカニズムは設定されたままになっています。段落 A の終わりに達すると、段落 B に進むのではなく、PERFORM ステートメントの後の MOVE ステートメントに制御が「戻され」ます。

このような結果は、意図したものではありません。この問題は、以下のことがすべて発生した場合に発生する可能性があります。

  1. プログラムが、EXIT PROGRAM または GOBACK ステートメントによって呼び出し側プログラムに戻る場合。
  2. PERFORM ステートメントがある段落 (または、ある範囲の段落) を実行し、さらに GO TO ステートメントに よって、またはその段落に制御が移ることによってもその段落に達する可能性がある場合。
  3. EXIT PROGRAM または GOBACK ステートメントが実行される前に、このような PERFORM ステートメントに戻る機会 がなかった場合。

ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)