カテゴリ: COBOL 更新日: 2025/07/27

COBOLのPERFORM VARYINGとINDEXED BY句を完全ガイド!初心者でもわかる繰り返し処理の基本

PERFORM VARYINGの繰り返し処理とINDEXED BY句
PERFORM VARYINGの繰り返し処理とINDEXED BY句

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

生徒

「COBOLで何回も同じ処理を繰り返す方法ってありますか?」

先生

「はい、COBOLではPERFORM VARYINGという命令を使って、繰り返し処理ができますよ。」

生徒

「それって、どんな時に使うんですか?」

先生

「例えば、配列(データをまとめたもの)を順番に処理したいときに使います。それでは、基本の使い方を見てみましょう!」

1. PERFORM VARYINGとは?

1. PERFORM VARYINGとは?
1. PERFORM VARYINGとは?

PERFORM VARYINGは、COBOLの繰り返し処理(ループ)を行うための命令です。プログラミングでは、何かを「何回も同じように繰り返す」ことがよくあります。

例えば「1から10まで順番に表示する」といった処理を行いたいときに、PERFORM VARYINGを使えばとても簡単に書くことができます。

日本語にすると「〜を変えながら処理を繰り返す」という意味になります。

2. PERFORM VARYINGの基本的な構文

2. PERFORM VARYINGの基本的な構文
2. PERFORM VARYINGの基本的な構文

まずはPERFORM VARYINGを使って、1から5までの数字を順番に表示する例を見てみましょう。


IDENTIFICATION DIVISION.
PROGRAM-ID. SampleLoop.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 COUNTER      PIC 9(2) VALUE 1.

PROCEDURE DIVISION.
    PERFORM VARYING COUNTER FROM 1 BY 1 UNTIL COUNTER > 5
        DISPLAY "現在のカウントは:" COUNTER
    END-PERFORM.
    STOP RUN.

このプログラムでは、COUNTERという変数を1からスタートして、1ずつ増やしながら、5を超えるまで繰り返しています。


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

このように、簡単にループ処理を作ることができます。

3. INDEXED BY句とテーブル(配列)

3. INDEXED BY句とテーブル(配列)
3. INDEXED BY句とテーブル(配列)

次に、複数のデータをまとめて持てる配列(テーブル)と、それを扱うためのINDEXED BY句を紹介します。

INDEXED BYは「何番目のデータか」を示すインデックス(添字)を使って、配列の要素にアクセスできるようにする仕組みです。


IDENTIFICATION DIVISION.
PROGRAM-ID. IndexedLoop.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 STUDENT-NAMES.
   05 STUDENT-NAME OCCURS 5 TIMES INDEXED BY IDX.
      10 NAME PIC X(10).

PROCEDURE DIVISION.
    MOVE "山田" TO NAME (1)
    MOVE "佐藤" TO NAME (2)
    MOVE "鈴木" TO NAME (3)
    MOVE "田中" TO NAME (4)
    MOVE "高橋" TO NAME (5)

    PERFORM VARYING IDX FROM 1 BY 1 UNTIL IDX > 5
        DISPLAY "学生名:" NAME (IDX)
    END-PERFORM.

    STOP RUN.

学生名:山田
学生名:佐藤
学生名:鈴木
学生名:田中
学生名:高橋

このように、配列とインデックスを使えば、複数のデータを順番に処理することができます。

4. PERFORM VARYINGとINDEXED BYの違いと注意点

4. PERFORM VARYINGとINDEXED BYの違いと注意点
4. PERFORM VARYINGとINDEXED BYの違いと注意点

PERFORM VARYINGは「普通の変数」を使ってカウントアップします。一方、INDEXED BYで使うIDXのようなインデックスは、特別な変数で、直接表示や計算には使えません

インデックス付き配列を使うときは、SET IDX TO 1のようにSET文を使って値を設定し、PERFORM VARYING IDX FROM 1 BY 1のように書きます。

ただし、初心者のうちは、通常の変数での繰り返し処理から始めて、配列処理に慣れてからインデックスも使うと理解しやすいでしょう。

5. プログラミング未経験でもわかる!繰り返し処理の身近な例え

5. プログラミング未経験でもわかる!繰り返し処理の身近な例え
5. プログラミング未経験でもわかる!繰り返し処理の身近な例え

例えば「5人に順番に挨拶する」と考えてみてください。

  • 1人目:「こんにちは、山田さん」
  • 2人目:「こんにちは、佐藤さん」
  • ...と順番に繰り返していく

これがまさにプログラムでの繰り返し処理(ループ)です。PERFORM VARYINGを使えば、これを自動的に行ってくれるわけです。

6. PERFORM VARYINGとINDEXED BYを使うメリット

6. PERFORM VARYINGとINDEXED BYを使うメリット
6. PERFORM VARYINGとINDEXED BYを使うメリット

同じ処理を何回も書かなくて済むので、プログラムが短く・読みやすく・修正しやすくなります。また、たくさんのデータをまとめて扱えるため、大量の処理が必要な場面でも便利です。

初心者にとっては最初は少し難しく感じるかもしれませんが、仕組みを理解すればとても強力なツールになります。

カテゴリの一覧へ
新着記事
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句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法