カテゴリ: COBOL 更新日: 2025/11/10

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

PERFORM WITH TEST AFTER(後判定ループ)の解説
PERFORM WITH TEST AFTER(後判定ループ)の解説

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

生徒

「COBOLで繰り返し処理を行う方法ってありますか?」

先生

「ありますよ。COBOLではPERFORM文を使って繰り返し処理ができます。」

生徒

「その中でもPERFORM WITH TEST AFTERって何ですか?」

先生

「それは“後判定ループ”という種類の繰り返し処理の方法です。まずは基本から一緒に見ていきましょう。」

1. PERFORM文とは?

1. PERFORM文とは?
1. PERFORM文とは?

COBOL(コボル)におけるPERFORM文とは、処理を繰り返すために使う命令文です。日常生活でたとえると「毎朝起きたら顔を洗う」「お米が炊けるまで何度も炊飯器を見る」といった決まりごとに近いです。

COBOLのプログラムでは、「同じ処理を何回も実行したい」ときや、「条件を満たすまで繰り返したい」ときにPERFORM文を使います。

PERFORM文にはいくつか種類がありますが、今回はPERFORM WITH TEST AFTERについて詳しく説明します。

2. PERFORM WITH TEST AFTERとは?

2. PERFORM WITH TEST AFTERとは?
2. PERFORM WITH TEST AFTERとは?

PERFORM WITH TEST AFTERは、「繰り返し処理を1回必ず実行してから、条件をチェックする」という意味です。これはプログラミングの世界で「後判定ループ」と呼ばれる処理方法です。

たとえば、「最低でも1回はあいさつをする。そのあと、まだ人がいるかどうかを確認して、いればまたあいさつをする」といった流れです。

この書き方を使えば、最初に1回は必ず処理を行うことが保証されます。

3. 文法と基本の構造

3. 文法と基本の構造
3. 文法と基本の構造

では、PERFORM WITH TEST AFTERの基本的な書き方を見てみましょう。


PERFORM 処理名
    WITH TEST AFTER
    UNTIL 条件式
END-PERFORM

この構文では、処理名は繰り返したい処理を指定し、条件式は「その処理をいつまで繰り返すか」のルールです。

WITH TEST AFTERは、UNTILで書かれた条件が「満たされるまで」繰り返します。

4. 実際のサンプルプログラム

4. 実際のサンプルプログラム
4. 実際のサンプルプログラム

それでは、具体的なサンプルを使って見てみましょう。ここでは「カウンターを1から5まで表示する」プログラムを作ってみます。


       IDENTIFICATION DIVISION.
       PROGRAM-ID. TEST-AFTER.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 COUNTER      PIC 9 VALUE 1.
       PROCEDURE DIVISION.

           PERFORM DISPLAY-NUMBER
               WITH TEST AFTER
               UNTIL COUNTER > 5
           STOP RUN.

       DISPLAY-NUMBER.
           DISPLAY "現在のカウント:" COUNTER
           ADD 1 TO COUNTER.

このプログラムでは、COUNTERという変数(へんすう)を1からスタートし、5より大きくなるまでDISPLAY-NUMBERという処理を繰り返します。

■実行結果


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

5. どうして「後判定」が必要なの?

5. どうして「後判定」が必要なの?
5. どうして「後判定」が必要なの?

なぜWITH TEST AFTERのような「後判定ループ」が必要なのでしょうか?

それは、「とにかく1回は絶対に処理を実行したい」場合があるからです。たとえば、ユーザーに最初の入力を必ず1回受け取りたい場面などでは、WITH TEST AFTERが便利です。

逆に「先に条件をチェックしてから処理したい」場合にはWITH TEST BEFOREを使います。

6. 間違いやすいポイントと注意点

6. 間違いやすいポイントと注意点
6. 間違いやすいポイントと注意点

PERFORM WITH TEST AFTERはとても便利な構文ですが、初心者の方がつまずきやすいポイントもいくつかあります。ここでは、よくあるミスや注意点を丁寧に紹介します。

■繰り返しが止まらない

UNTILの条件がずっと満たされないままだと、処理が無限に続いてしまいます。これはよくあるエラーで、たとえば次のように変数が増えないままだと、止まらなくなります。


PERFORM SHOW-NUMBER
    WITH TEST AFTER
    UNTIL COUNTER > 5

SHOW-NUMBER.
    DISPLAY "カウント:" COUNTER
    * ← ADD文がないのでカウンターが増えない

このように、カウンターを増やす命令(ADDなど)を忘れてしまうと、止めたくても止まらないループになります。

■初期値の設定ミス

繰り返し回数を制御する変数の初期値が正しくないと、想定よりも多くループしてしまったり、逆にすぐ終わってしまったりします。


01 COUNTER PIC 9 VALUE 6.

このように、最初から条件(COUNTER > 5)が成り立っていると、1回実行されてすぐ終了します。意図と合っているかをよく確認しましょう。

■処理が1回も実行されないと勘違い

PERFORM WITH TEST AFTERは、必ず最初に1回処理を実行するというルールになっています。たとえ最初から条件が満たされていても、1回は実行されます。


01 COUNTER PIC 9 VALUE 9.

PERFORM DO-ONCE
    WITH TEST AFTER
    UNTIL COUNTER > 5

DO-ONCE.
    DISPLAY "実行された処理"

この場合でも、「COUNTER > 5」は最初から満たされていますが、DO-ONCEの処理は1回だけ実行されます。ここがWITH TEST BEFOREとの大きな違いです。

7. 初心者におすすめの練習問題

7. 初心者におすすめの練習問題
7. 初心者におすすめの練習問題

初心者の方には、以下のような練習がおすすめです。

  • 1から10までの数字を表示するループを作る
  • 「ユーザーが0を入力するまで繰り返す」入力処理を作る
  • 繰り返しの中で、合計値を加算する処理を試す

繰り返し処理の考え方に慣れることで、COBOLのプログラムがより理解しやすくなります。

カテゴリの一覧へ
新着記事
C#で複数ファイルをまとめて操作する方法(foreach・LINQ)をやさしく解説!
C#のインターフェースとは?クラス設計を柔軟にする基本技術
C#のコンストラクタの役割と使い方!オブジェクト初期化の基本
COBOLでデータベース接続を理解しよう!初心者でもわかる基本の考え方
人気記事
No.1
Java&Spring記事人気No1
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.3
Java&Spring記事人気No3
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.4
Java&Spring記事人気No4
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法