COBOLのPERFORM UNTILの使い方を完全ガイド!初心者でもわかる繰り返し処理
生徒
「COBOLで同じ処理を何回も繰り返したいときは、どうすればいいですか?」
先生
「そのときは、PERFORM UNTILという繰り返し処理(ループ)を使うと便利ですよ。」
生徒
「PERFORM UNTILって、どんな風に使うんですか?」
先生
「それでは、初心者でもわかるように丁寧に説明していきましょう!」
1. PERFORM UNTILとは?
COBOLのPERFORM UNTILは、条件が満たされるまで処理を繰り返す命令です。ループ処理とも呼ばれます。
「ある決まった処理を、条件が成立するまで何度も繰り返す」ということができます。
このPERFORM UNTILは、たとえば「変数の値が5になるまで数字を増やす」や「条件が真になるまで処理を続ける」といった使い方をします。
2. 日常の例でPERFORM UNTILをイメージしよう
「お皿を全部洗い終わるまで、お皿を1枚ずつ洗う」という家事のような流れが、PERFORM UNTILに似ています。
たとえば、お皿が10枚あって、1枚ずつ洗っていき、すべて終わるまで繰り返しますよね。これがプログラムのループ処理です。
3. PERFORM UNTILの基本的な構文
それでは、COBOLのPERFORM UNTILを使った簡単な構文を見てみましょう。
IDENTIFICATION DIVISION.
PROGRAM-ID. SampleUntil.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 COUNT PIC 9(2) VALUE 1.
PROCEDURE DIVISION.
PERFORM UNTIL COUNT > 5
DISPLAY "現在のカウント: " COUNT
ADD 1 TO COUNT
END-PERFORM
STOP RUN.
4. 実行結果のイメージ
上記のプログラムを実行すると、次のような結果になります。
現在のカウント: 1
現在のカウント: 2
現在のカウント: 3
現在のカウント: 4
現在のカウント: 5
5. どこがループなの?処理の流れを詳しく解説
PERFORM UNTIL COUNT > 5 というのは、「COUNTという変数が5より大きくなるまで繰り返す」という意味です。
最初にCOUNTの値は1です。そして中のDISPLAY命令で表示したあと、ADD 1 TO COUNTでCOUNTの値が1増えます。
そしてまた条件をチェックして、まだ5以下なので繰り返します。これをCOUNTが6になるまで繰り返すのです。
6. PERFORM UNTILとIF文の違いは?
IF文は1回だけ条件を判断して処理を分岐しますが、PERFORM UNTILは条件が成立するまで何度も繰り返すのがポイントです。
つまり、「繰り返し処理をしたいかどうか」で使い分けましょう。
7. 無限ループに注意しよう
PERFORM UNTILでは、「条件を満たさないと永久にループし続ける」という無限ループになる可能性もあります。
たとえば、COUNTを増やさなかったり、条件を間違えたりすると、終わらなくなります。
PERFORM UNTIL COUNT > 5
DISPLAY "COUNT: " COUNT
* ADD文がない!
END-PERFORM
このように、ループ内で変数をきちんと更新することがとても大切です。
8. 応用:表示回数をユーザーが決める
次のサンプルでは、ユーザーが表示回数を指定し、それに応じてメッセージを繰り返します。
IDENTIFICATION DIVISION.
PROGRAM-ID. InputUntil.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 COUNT PIC 9(2) VALUE 1.
01 LIMIT PIC 9(2).
PROCEDURE DIVISION.
DISPLAY "何回表示しますか?(1~99)"
ACCEPT LIMIT
PERFORM UNTIL COUNT > LIMIT
DISPLAY "こんにちは! 回数: " COUNT
ADD 1 TO COUNT
END-PERFORM
STOP RUN.
何回表示しますか?(1~99)
3
こんにちは! 回数: 1
こんにちは! 回数: 2
こんにちは! 回数: 3
このように、ループ処理と変数を組み合わせることで、より柔軟なプログラムが書けます。
9. PERFORM UNTILを学ぶと何ができるの?
この命令をマスターすることで、繰り返し処理ができるようになります。たとえば:
- 指定回数だけメッセージを表示する
- データを1件ずつ読み取って処理する
- 条件に応じて入力や計算を続ける
プログラムに柔軟性を持たせるために、PERFORM UNTILはとても重要です。
まとめ
COBOLで繰り返し処理を行うときに欠かせないPERFORM UNTILは、初心者が最初に覚えるべき基礎のひとつです。今回の記事では、PERFORM UNTILがどのような仕組みで処理を繰り返すのか、その動きの流れを追いながら丁寧に確認してきました。実際に手を動かしてみると、条件が成立するまで同じ処理が繰り返される仕組みがとても直感的で、ひとつひとつの命令がどのように積み上がっていくのかを自然に理解できるようになります。特に、カウント変数を使って数字を増やしながら表示を繰り返す基本パターンは、COBOLのロジックになじむために最適な練習です。また、条件の書き方やカウントの更新を忘れた場合の無限ループの危険性など、初心者がつまずきやすいポイントも実体験として覚えておくことで、後の開発作業で大きな力になります。 PERFORM UNTILは、単に数字を増やしたり表示を繰り返すだけではなく、実務ではデータの読み込みや処理をひとつずつ進める場面などにも広く利用されます。入力が尽きるまで繰り返す処理や、条件によって継続したり終了したりする柔軟なロジックを扱う場面では特に重要で、COBOLでの業務プログラミングにおける核となる考え方です。PERFORM UNTILの理解が進むほど、プログラムの流れを自分でコントロールできる楽しさが感じられるようになり、複雑に見える業務処理も段階的に整理しやすくなります。 そして今回の記事では、実行回数をユーザーが決める応用パターンや、PERFORM UNTILの中で変数を更新しながら処理する流れなども確認しました。このような考え方が身につくと、同じ構文を使ってさまざまな状況に適応できるようになります。プログラムの動きは常に一定ではなく、データや条件によって異なる動きを必要とすることも多いため、こうした基本の組み合わせを理解しておくことは大きな強みになります。 以下では、今回学んだ内容を踏まえて応用的なサンプルコードを用意しました。PERFORM UNTILを使って複数の条件を扱う例になっているので、実際の現場でどのように組み合わせるのかをイメージしやすくなるでしょう。構造をよく見ながら、どこで条件のチェックを行い、どのように値を更新していくか理解する練習に活用してください。
PERFORM UNTIL 応用サンプルコード
複数の条件を組み合わせて処理を繰り返す例です。
IDENTIFICATION DIVISION.
PROGRAM-ID. MultiUntil.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 COUNT PIC 9(2) VALUE 1.
01 LIMIT PIC 9(2) VALUE 10.
01 TOTAL PIC 9(3) VALUE 0.
PROCEDURE DIVISION.
PERFORM UNTIL COUNT > LIMIT OR TOTAL > 50
DISPLAY "現在の回数: " COUNT
ADD COUNT TO TOTAL
DISPLAY "合計値: " TOTAL
ADD 1 TO COUNT
END-PERFORM
DISPLAY "ループ終了時のカウント: " COUNT
DISPLAY "ループ終了時の合計値: " TOTAL
STOP RUN.
この例では、COUNTがLIMITを超えるか、TOTALが50を超えるか、いずれかの条件が成立した時点でループが終了するようになっています。複数の条件を扱うことで、業務プログラムの複雑な流れを柔軟にコントロールできるようになります。実際の開発現場では、ファイルの読み込みが終わる条件や、入力されたデータが規定値に達した場合の処理など、多くの場面で条件を複数組み合わせることが必要になります。 PERFORM UNTILを理解する際に最も大切なのは、「条件を満たすまで処理を継続する」という本質を押さえることです。条件式をどの位置で確認し、どのように変数を更新するかを意識しておくことで、複雑な処理も自然と組み立てられるようになります。たとえば、ループの中で必要な処理を行いながら、必要に応じて表示したり、計算したり、値を更新したりすることで、実用的なロジックを作れます。 また、PERFORM UNTILを学ぶと、IF文やGO TOに頼らず、より読みやすく保守しやすいコードを書けるようになります。これはCOBOLの特徴でもある「構造化された流れ」を保ちつつ、誰が読んでも理解しやすいプログラムを意識する上でも欠かせません。実際の業務では複数の担当者が同じソースコードを扱うため、ループの動きが分かりやすいことは品質の向上にも直結します。 PERFORM UNTILは簡単なように見えて非常に奥が深い構文です。単純な繰り返しから始まり、複数条件の処理、変数の更新、ファイル処理との組み合わせなど、応用範囲が広いため、しっかり理解して使えるようになるとCOBOLのプログラムが一気に書きやすくなります。繰り返し構造は日常の中にもたくさん存在しており、「条件が整うまで続ける」という考え方を自然に身につけることで、プログラムの動作全体がイメージしやすくなるはずです。 最後に、今回学んだ内容を振り返りながら、より実践的な視点でPERFORM UNTILを活用していくためのヒントをまとめると、条件の設定、値の更新、ループの終了タイミングの3つが大事な柱になります。この3つをバランスよく意識することで、どんな場面でも適応しやすい柔軟なロジックを作れるようになります。
生徒
「PERFORM UNTILって単純なループだと思っていましたが、条件を工夫すればいろいろな処理が作れるんですね。」
先生
「その通りです。数を増やすだけではなく、条件を複数組み合わせると実務的な動きを再現できますよ。」
生徒
「無限ループが怖いと思っていましたが、変数の更新をしっかり書けば防げるんだと分かって安心しました。」
先生
「そこが一番大事なポイントですね。更新忘れはよくあるミスなので、必ずセットで考える癖をつけましょう。」
生徒
「今回の応用サンプルみたいに、複数条件で止める処理って実際の仕事でもよく使いますか?」
先生
「よく使いますよ。ファイルの終わりを判定したり、特定の条件がそろったところで停止したり、業務システムでは欠かせない考え方です。」
生徒
「なるほど… 普段の生活でも“終わるまで続ける”っていう動きはたくさんありますし、イメージしやすいです!」
先生
「そうですね。日常の動きをプログラムの発想につなげられると、理解が一気に深まりますよ。」