カテゴリ: COBOL 更新日: 2025/12/04

COBOLのPERFORM UNTILの使い方を完全ガイド!初心者でもわかる繰り返し処理

PERFORM UNTILのループ構造を理解しよう
PERFORM UNTILのループ構造を理解しよう

先生と生徒の会話形式で理解しよう

生徒

「COBOLで同じ処理を何回も繰り返したいときは、どうすればいいですか?」

先生

「そのときは、PERFORM UNTILという繰り返し処理(ループ)を使うと便利ですよ。」

生徒

「PERFORM UNTILって、どんな風に使うんですか?」

先生

「それでは、初心者でもわかるように丁寧に説明していきましょう!」

1. PERFORM UNTILとは?

1. PERFORM UNTILとは?
1. PERFORM UNTILとは?

COBOLのPERFORM UNTILは、条件が満たされるまで処理を繰り返す命令です。ループ処理とも呼ばれます。

「ある決まった処理を、条件が成立するまで何度も繰り返す」ということができます。

このPERFORM UNTILは、たとえば「変数の値が5になるまで数字を増やす」や「条件がになるまで処理を続ける」といった使い方をします。

2. 日常の例でPERFORM UNTILをイメージしよう

2. 日常の例でPERFORM UNTILをイメージしよう
2. 日常の例でPERFORM UNTILをイメージしよう

「お皿を全部洗い終わるまで、お皿を1枚ずつ洗う」という家事のような流れが、PERFORM UNTILに似ています。

たとえば、お皿が10枚あって、1枚ずつ洗っていき、すべて終わるまで繰り返しますよね。これがプログラムのループ処理です。

3. PERFORM UNTILの基本的な構文

3. PERFORM UNTILの基本的な構文
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. 実行結果のイメージ

4. 実行結果のイメージ
4. 実行結果のイメージ

上記のプログラムを実行すると、次のような結果になります。


現在のカウント: 1
現在のカウント: 2
現在のカウント: 3
現在のカウント: 4
現在のカウント: 5

5. どこがループなの?処理の流れを詳しく解説

5. どこがループなの?処理の流れを詳しく解説
5. どこがループなの?処理の流れを詳しく解説

PERFORM UNTIL COUNT > 5 というのは、「COUNTという変数が5より大きくなるまで繰り返す」という意味です。

最初にCOUNTの値は1です。そして中のDISPLAY命令で表示したあと、ADD 1 TO COUNTでCOUNTの値が1増えます。

そしてまた条件をチェックして、まだ5以下なので繰り返します。これをCOUNTが6になるまで繰り返すのです。

6. PERFORM UNTILとIF文の違いは?

6. PERFORM UNTILとIF文の違いは?
6. PERFORM UNTILとIF文の違いは?

IF文は1回だけ条件を判断して処理を分岐しますが、PERFORM UNTILは条件が成立するまで何度も繰り返すのがポイントです。

つまり、「繰り返し処理をしたいかどうか」で使い分けましょう。

7. 無限ループに注意しよう

7. 無限ループに注意しよう
7. 無限ループに注意しよう

PERFORM UNTILでは、「条件を満たさないと永久にループし続ける」という無限ループになる可能性もあります。

たとえば、COUNTを増やさなかったり、条件を間違えたりすると、終わらなくなります。


       PERFORM UNTIL COUNT > 5
           DISPLAY "COUNT: " COUNT
           * ADD文がない!
       END-PERFORM

このように、ループ内で変数をきちんと更新することがとても大切です。

8. 応用:表示回数をユーザーが決める

8. 応用:表示回数をユーザーが決める
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を学ぶと何ができるの?

9. PERFORM UNTILを学ぶと何ができるの?
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って単純なループだと思っていましたが、条件を工夫すればいろいろな処理が作れるんですね。」

先生

「その通りです。数を増やすだけではなく、条件を複数組み合わせると実務的な動きを再現できますよ。」

生徒

「無限ループが怖いと思っていましたが、変数の更新をしっかり書けば防げるんだと分かって安心しました。」

先生

「そこが一番大事なポイントですね。更新忘れはよくあるミスなので、必ずセットで考える癖をつけましょう。」

生徒

「今回の応用サンプルみたいに、複数条件で止める処理って実際の仕事でもよく使いますか?」

先生

「よく使いますよ。ファイルの終わりを判定したり、特定の条件がそろったところで停止したり、業務システムでは欠かせない考え方です。」

生徒

「なるほど… 普段の生活でも“終わるまで続ける”っていう動きはたくさんありますし、イメージしやすいです!」

先生

「そうですね。日常の動きをプログラムの発想につなげられると、理解が一気に深まりますよ。」

カテゴリの一覧へ
新着記事
New1
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New2
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New3
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
New4
COBOL
COBOLの帳票出力を完全攻略!数値項目のカンマ・小数点編集例を徹底解説
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.3
Java&Spring記事人気No3
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.4
Java&Spring記事人気No4
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.5
Java&Spring記事人気No5
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法
No.8
Java&Spring記事人気No8
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決