COBOLのPERFORM VARYINGとINDEXED BY句を完全ガイド!初心者でもわかる繰り返し処理の基本
生徒
「COBOLで何回も同じ処理を繰り返す方法ってありますか?」
先生
「はい、COBOLではPERFORM VARYINGという命令を使って、繰り返し処理ができますよ。」
生徒
「それって、どんな時に使うんですか?」
先生
「例えば、配列(データをまとめたもの)を順番に処理したいときに使います。それでは、基本の使い方を見てみましょう!」
1. PERFORM VARYINGとは?
PERFORM VARYINGは、COBOLの繰り返し処理(ループ)を行うための命令です。プログラミングでは、何かを「何回も同じように繰り返す」ことがよくあります。
例えば「1から10まで順番に表示する」といった処理を行いたいときに、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句とテーブル(配列)
次に、複数のデータをまとめて持てる配列(テーブル)と、それを扱うための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の違いと注意点
PERFORM VARYINGは「普通の変数」を使ってカウントアップします。一方、INDEXED BYで使うIDXのようなインデックスは、特別な変数で、直接表示や計算には使えません。
インデックス付き配列を使うときは、SET IDX TO 1のようにSET文を使って値を設定し、PERFORM VARYING IDX FROM 1 BY 1のように書きます。
ただし、初心者のうちは、通常の変数での繰り返し処理から始めて、配列処理に慣れてからインデックスも使うと理解しやすいでしょう。
5. プログラミング未経験でもわかる!繰り返し処理の身近な例え
例えば「5人に順番に挨拶する」と考えてみてください。
- 1人目:「こんにちは、山田さん」
- 2人目:「こんにちは、佐藤さん」
- ...と順番に繰り返していく
これがまさにプログラムでの繰り返し処理(ループ)です。PERFORM VARYINGを使えば、これを自動的に行ってくれるわけです。
6. PERFORM VARYINGとINDEXED BYを使うメリット
同じ処理を何回も書かなくて済むので、プログラムが短く・読みやすく・修正しやすくなります。また、たくさんのデータをまとめて扱えるため、大量の処理が必要な場面でも便利です。
初心者にとっては最初は少し難しく感じるかもしれませんが、仕組みを理解すればとても強力なツールになります。