PERFORM procedure-name-1 THROUGH procedure-name-2
      VARYING identifier-2 FROM identifier-3
            BY identifier-4 UNTIL condition-1
          AFTER identifier-5 FROM identifier-6
            BY identifier-7 UNTIL condition-2
          AFTER identifier-8 FROM identifier-9
            BY identifier-10 UNTIL condition-3

処理は、次の点を除いては 2 つの ID を変更する場合と同じです。 つまり、ID-5 が ID-7 だけ増やされるたびに ID-8 が完全なサイクルを通過し、 次に ID-2 が変更されるたびに ID-5 が完全なサイクルを通過します。

PERFORM ステートメントの実行終了時には、次のようになります。
  • ID-5ID-8 には、 それぞれ ID-6 と ID-9 の現行値が入ります。
  • ID-2 は、 最後に使用された設定値を増大 / 減少値分超える値をもちます (ただし、PERFORM ステートメントの実行開始時に条件-1 が真であった場合には、 ID-2 に ID-3 の現行値が入ります)。

図 1 は、3 つの ID を変更する場合の PERFORM ステートメントの論理を示したものです。

図 1. 形式 4 の PERFORM ステートメントの論理 - 3 つの ID を変更する場合
この図は 3 つの ID を変更する場合の PERFORM ステートメントの論理を示したものです

上の図では、ID-5 と ID-2 が関係をもたないことを想定してします。 一方が他方に依存している場合 (例えば添え字を介して)、結果は予測できますが、一般的に望ましいものではありません。

上の図では、さらに、ID-8 と ID-5 が関係をもたないことも想定しています。 一方が他方に依存している場合 (例えば添え字を介して)、結果は予測できますが、一般的に望ましいものではありません。