本文へスキップ
BecomeCoder

COBOLコース · 第5章 繰り返しと構造化 ― PERFORM · レッスン26

PERFORM ... TIMES ― 回数を指定した繰り返し

ブラウザで完結

導入

前のレッスンのPERFORMは「1回だけ呼び出す」ものでした。ここに「回数」を指定すると、同じ段落を繰り返し実行できます。最も単純な繰り返し方法です。

説明

       PROCEDURE DIVISION.
           PERFORM PRINT-STAR 5 TIMES.
           STOP RUN.

       PRINT-STAR.
           DISPLAY "*".
  • PERFORM 段落名 N TIMES. … 段落を N回 繰り返し実行する。
  • この例では PRINT-STAR 段落(* を1つ表示する)が5回呼ばれるので、* が5行表示されます。

固定の回数だけでなく、変数で回数を指定することもできます。

       01  WS-REPEAT-COUNT      PIC 9(2)     VALUE 3.

       PROCEDURE DIVISION.
           PERFORM PRINT-STAR WS-REPEAT-COUNT TIMES.

段落を呼び出さず、その場に処理を書いてTIMESで繰り返すこともできます(インラインPERFORM)。

           PERFORM 3 TIMES
               DISPLAY "Hello"
           END-PERFORM.
  • PERFORM ... END-PERFORM … 段落名を指定せず、PERFORMEND-PERFORM の間に直接処理を書くスタイル。ちょっとした繰り返しなら、わざわざ別の段落を作らずその場で完結できて便利です。

TIMES は「決まった回数だけ確実に繰り返したい」場面に向いています。「条件を満たす間ずっと繰り返したい」場合は、次のレッスンの PERFORM UNTIL を使います。

試すには

PERFORM ... TIMES のインライン形式を使い、1 から 5 までの数を1行ずつ表示するには、繰り返しの中でカウンタ変数を自分で ADD 1 TO していく必要があります。試しに書いてみましょう(もっと簡単な方法はレッスン28で学びます)。

実際に動かしてみよう

下のエディタにCOBOLを書いて「実行」を押すと、学習用シミュレータが DISPLAY の出力を表示します(本物のGnuCOBOLではなく、教材の範囲を再現した軽量エンジンです)。PICTURE句の桁数・ゼロ詰め・切り捨てなどCOBOLらしい挙動もそのまま体験できます。本文の例を書き換えて動かしてみましょう(ファイル処理やCALLなど一部の機能は対象外です)。

COBOL — ブラウザ内で実行(学習用シミュレータ)

COBOLの教材サブセットを動かす学習用シミュレータを読み込みます(本物のGnuCOBOLではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。