ネストされた PERFORM ステートメント
PERFORM ステートメントを、実行されるプロシージャー内に指定できます。 戻り点への論理パスが複数ある場合には、プロシージャー名-2 に EXIT ステートメントだけで構成される段落を指定できます。 そのようにする場合には、戻り点へのすべてのパスをこの段落に導かなくてはなりません。
プロシージャー名-1 とプロシージャー名-2 の両方を指定する場合には、GO TO および PERFORM ステートメントをこれらの段落またはセクションに含まれる一連のステートメント内に指定できます。 GO TO ステートメントでは、プロシージャー名-1 とプロシージャー名-2 の範囲外のプロシージャー名を参照してはなりません。 それを行うと、結果は予測できないものとなり、診断もできなくなります。
プロシージャー名-1 だけを指定する場合には、PERFORM および GO TO ステートメントをそのプロシージャー内に指定できます。 GO TO ステートメントでは、プロシージャー名-1 の範囲外のプロシージャー名を参照してはなりません。 それを行うと、結果は予測できないものとなり、診断もできなくなります。
実行されるプロシージャーに別の PERFORM ステートメントが含まれている場合、 組み込まれた PERFORM ステートメントと関連する一連のプロシージャーは、最初の PERFORM ステートメントの実行されるプロシージャーに全体が含まれているか、 さもなければ全体が範囲外になければなりません。 すなわち、他の活動状態の PERFORM ステートメントの実行されるプロシージャーの範囲内から実行点が始まる PERFORM ステートメントは、 他の活動状態の PERFORM ステートメントの出口点を超えて制御を渡してはなりません。 さらに、そのような複数の活動状態の PERFORM ステートメントが、共通の出口をもってはなりません。
IBM Extension 複数の活動状態の PERFORM ステートメントが共通の出口点を持つことができます。 End of IBM Extension
PERFORM ステートメント以外の方法で制御が一連のプロシージャーへ渡された場合には、 これらのプロシージャーを参照する PERFORM ステートメントがない場合と同じように、 制御が出口点を超えて次の実行可能ステートメントへ渡されます。