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


PERFORM から戻る方法

ある段落 (または、ある範囲の複数の段落) が PERFORM ステートメント (「行外 PERFORM」) によって実行されるとき、指定範囲の段落の終了時のメカニズムによって、制御が PERFORM ステートメントの直後に戻るようになっています。

以下の例を考えてください。
    PERFORM A
    STOP RUN.
A.  DISPLAY "Hi".
B.  DISPLAY "there".

メッセージ「Hi」を表示した後、コンパイラー生成コードは段落 A の実行後に制御のフローが STOP RUN ステートメントへ戻るようにします。これが行われないと、制御が段落 B に移ることになります。

このコード・メカニズムは、プログラムが初めて呼び出されたとき、またはプログラムが 取り消されたときに、初期状態にリセットされます。NOCMPR2 のもとでは、さらに、プログラムが呼び出されるたびにリセットされます。CMPR2 のもとでは、プログラムが取り消されずに連続して 2 回呼び出されたとき、このメカ ニズムは最後に使用された状態のままになります。これは、PERFORM ステートメントすべての実行が完了する前にプログラムが EXIT PROGRAM また は GOBACK ステートメントを出すような場合に重要になります。

以下の例について考えてください。
    IF FIRST-TIME-CALLED THEN
      PERFORM A
      MOVE ZERO TO N
    ELSE
      SUBTRACT 1 FROM N
      GO TO A.
    GOBACK.
A.  IF N > 1 THEN
      GOBACK.
B.  DISPLAY "Processing continues...".

スイッチ FIRST-TIME-CALLED がプログラムに渡されました。このスイッチは、プログラ ムが取り消されずに呼び出されたかどうかをプログラムに通知します。変数 N もプログラムに渡されました。


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

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