PERFORM procedure-name-1 THROUGH procedure-name-2
       VARYING identifier-2 FROM identifier-3
             BY identifier-4 UNTIL condition-1
  1. ID-2 が、それの開始値である ID-3 (またはリテラル-1) と等しく設定されます。
  2. 条件-1 が次のように評価されます。
    1. 条件-1 が偽である場合には、ステップ 3 ~ 5 が実行されます。
    2. 条件-1 が真である場合には、制御権が PERFORM ステートメントに続くステートメントに直接渡されます。
  3. プロシージャー名-1 からプロシージャー名-2 (指定されている場合) までのすべてが 1 回実行されます。
  4. ID-2 が ID-4 (またはリテラル-2) だけ増やされ、条件-1 が再び評価されます。
  5. 条件-1 が真になるまで、ステップ 2 からステップ 4 が繰り返されます。

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

図 1 は、TEST BEFORE 句を使用して ID を変更する場合の PERFORM ステートメントの論理を示したものです。 図 2 は、TEST AFTER 句を使用して ID を変更する場合の PERFORM ステートメントの論理を示したものです。

図 1. TEST BEFORE を使用して 1 つの ID を変更する場合
この図は TEST BEFORE 句を使用して ID を変更する場合の PERFORM ステートメントの論理を示したものです
図 2. TEST AFTER を使用して 1 つの ID を変更する場合
この図は TEST AFTER 句を使用して ID を変更する場合の PERFORM ステートメントの論理を示したものです