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

COBOLのPERFORMトレースを徹底解説!初心者でもわかるループ処理の確認方法

PERFORMトレースの重要性とやり方
PERFORMトレースの重要性とやり方

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

生徒

「COBOLで繰り返し処理ってどうやるんですか?あと、何回目の繰り返しなのかを確認する方法ってありますか?」

先生

「COBOLでは、PERFORM文を使って繰り返し処理を行います。そして、繰り返しの中でDISPLAY文を使えば、ループの回数や内容を簡単にトレース(追跡)できますよ。」

生徒

「なるほど!それなら途中で止まったり、おかしな動きになっても確認しやすいですね!」

先生

「はい。それでは、初心者の方向けにPERFORMの基本とトレース方法をじっくり解説していきましょう。」

1. PERFORM(パフォーム)ってなに?

1. PERFORM(パフォーム)ってなに?
1. PERFORM(パフォーム)ってなに?

PERFORMとは、COBOLの命令(めいれい)のひとつで、特定の処理を繰り返したり呼び出したりするために使います。

たとえば、「5回同じ処理を繰り返す」といった場合に使うのがこのPERFORM文です。英語で「実行する」という意味があり、決められた処理を何度も自動でやってくれます。

パソコンをあまり触ったことがない方でも、「料理のレシピで、同じ動作を何度も繰り返す」ことをイメージすれば理解しやすいです。

2. PERFORMの基本的な書き方

2. PERFORMの基本的な書き方
2. PERFORMの基本的な書き方

まずは、COBOLでPERFORMを使って5回同じ処理を繰り返すサンプルを見てみましょう。


       IDENTIFICATION DIVISION.
       PROGRAM-ID. SAMPLE.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 COUNTER        PIC 9(2) VALUE 1.
       PROCEDURE DIVISION.
           PERFORM UNTIL COUNTER > 5
               DISPLAY "繰り返し回数:" COUNTER
               ADD 1 TO COUNTER
           END-PERFORM
           STOP RUN.

このプログラムは、「COUNTER」という数字の入る箱を使って、5回繰り返す処理をしています。

PERFORM UNTIL COUNTER > 5というのは、「COUNTERが5を超えるまで繰り返す」という意味です。

毎回、DISPLAYで回数を表示しながら、COUNTERの値を1ずつ増やしていきます。

実行すると、下記のような表示になります。


繰り返し回数:1
繰り返し回数:2
繰り返し回数:3
繰り返し回数:4
繰り返し回数:5

3. PERFORMのトレースとは?

3. PERFORMのトレースとは?
3. PERFORMのトレースとは?

PERFORMのトレースとは、繰り返しの中で何が起きているかを追跡して確認することです。

プログラムがうまく動かないときに、DISPLAY文を使って、処理の流れや変数の値を表示しながら確認します。

トレースは「たどる」「追跡する」という意味です。

トレースを行うことで、「何回繰り返しているのか」「中でどんな計算がされているか」など、プログラムの中身を目で見て確認できます。

4. トレース用にDISPLAY文を入れてみよう

4. トレース用にDISPLAY文を入れてみよう
4. トレース用にDISPLAY文を入れてみよう

さきほどの例に、より詳しいトレース用メッセージを追加してみましょう。


       IDENTIFICATION DIVISION.
       PROGRAM-ID. TRACE-SAMPLE.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 COUNTER        PIC 9(2) VALUE 1.
       01 SQUARE         PIC 9(4).
       PROCEDURE DIVISION.
           DISPLAY "=== PERFORMトレース開始 ==="
           PERFORM UNTIL COUNTER > 5
               COMPUTE SQUARE = COUNTER * COUNTER
               DISPLAY "現在のカウント:" COUNTER
               DISPLAY "その2乗は:" SQUARE
               ADD 1 TO COUNTER
           END-PERFORM
           DISPLAY "=== PERFORMトレース終了 ==="
           STOP RUN.

このプログラムでは、1から5までの数字を順番に表示し、それぞれの数字の2乗(自分自身×自分自身)を計算して表示しています。

実行結果は次のようになります。


=== PERFORMトレース開始 ===
現在のカウント:1
その2乗は:1
現在のカウント:2
その2乗は:4
現在のカウント:3
その2乗は:9
現在のカウント:4
その2乗は:16
現在のカウント:5
その2乗は:25
=== PERFORMトレース終了 ===

このように、DISPLAY文を上手に使えば、処理の中身を順番に追うことができ、プログラムの流れを「見える化」できます。

5. トレースが役立つ場面

5. トレースが役立つ場面
5. トレースが役立つ場面

プログラムがうまく動かないとき、PERFORMの中のどこで問題が起きているのかを調べるために、DISPLAY文でトレースするのがとても有効です。

たとえば、「5回繰り返すつもりが、ずっと終わらない」といった場合、トレース表示を見ればCOUNTERの値が変わっていないなどのミスがすぐに見つかります。

また、PERFORM VARYINGという書き方を使えば、FOR文のように回数付きの繰り返しもできます。そのときもトレースを入れて確認するのが安心です。

6. PERFORM VARYINGでもトレースは可能

6. PERFORM VARYINGでもトレースは可能
6. PERFORM VARYINGでもトレースは可能

PERFORM VARYINGは、FORループのように、変数の値を指定しながら繰り返す方法です。


       IDENTIFICATION DIVISION.
       PROGRAM-ID. VARYING-TRACE.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 I        PIC 9(2).
       01 TOTAL    PIC 9(4) VALUE 0.
       PROCEDURE DIVISION.
           PERFORM VARYING I FROM 1 BY 1 UNTIL I > 3
               ADD I TO TOTAL
               DISPLAY "Iの値:" I
               DISPLAY "合計(TOTAL)の値:" TOTAL
           END-PERFORM
           STOP RUN.

VARYINGは、「1から3まで、1ずつ増やして繰り返す」という意味です。

それぞれのIの値と、加算された合計値をトレースできます。


Iの値:1
合計(TOTAL)の値:1
Iの値:2
合計(TOTAL)の値:3
Iの値:3
合計(TOTAL)の値:6

このように、繰り返しの中でDISPLAY文を使うことで、数字の変化が目で見てわかり、初心者の方でもプログラムの動作を確かめながら学ぶことができます。

7. トレースに便利なラベル表示の工夫

7. トレースに便利なラベル表示の工夫
7. トレースに便利なラベル表示の工夫

DISPLAY文を使うとき、処理のステップ名や区切り線を表示すると、より分かりやすくなります。


DISPLAY "=== STEP 1: 初期設定 ==="
DISPLAY "COUNTER:" COUNTER
DISPLAY "=== STEP 2: 計算処理開始 ==="

このようにすれば、今どの処理をしているかがハッキリわかり、あとから見返したときにも混乱しにくくなります。

特に初心者の方には、メモを取るように表示を残すイメージで、トレースメッセージを加えていくのがおすすめです。

まとめ

まとめ
まとめ

PERFORMトレースを理解することの重要性

この記事では、COBOLにおけるPERFORM文の基本的な使い方から、 繰り返し処理の中身を確認するためのトレース方法までを段階的に学んできました。 COBOLは業務システムや基幹システムで長く使われている言語であり、 繰り返し処理や集計処理、計算ロジックが多く含まれるのが特徴です。 そのため、PERFORMによるループ処理を正しく理解し、 「何回繰り返されているのか」「中でどんな処理が行われているのか」を 自分の目で確認できるようになることが、とても大切になります。

PERFORMトレースとは、繰り返し処理の途中にDISPLAY文を入れて、 処理の流れや変数の値を順番に表示しながら追跡する考え方です。 これにより、無限ループになっていないか、カウンタ変数が正しく増減しているか、 計算結果が想定通りかどうかを、実行結果から判断できます。 初心者の方にとっては、プログラムの内部動作を理解するための 最も分かりやすい学習方法のひとつと言えるでしょう。

DISPLAYを使ったループ処理の見える化

記事の中では、PERFORM UNTILやPERFORM VARYINGといった 代表的な繰り返し構文を使いながら、DISPLAY文でトレースする方法を紹介しました。 繰り返し回数を表示したり、計算途中の値を表示したりすることで、 「処理が今どの段階にあるのか」が明確になります。 特に、COUNTERやIといった制御用の変数を表示することで、 ループ条件が正しく動作しているかを簡単に確認できます。

また、ステップ名や区切り線をDISPLAYで表示する工夫も重要です。 処理の開始や終了、計算フェーズの切り替わりを明示することで、 実行結果が読みやすくなり、後からログを見返したときにも理解しやすくなります。 これは実務のCOBOLプログラムにおいてもよく使われる考え方であり、 保守や改修のしやすさにもつながります。

まとめとしてのサンプルプログラム

ここで、PERFORMトレースの考え方を整理したシンプルなサンプルを確認してみましょう。 繰り返し回数と合計値をDISPLAYで表示しながら処理を進めることで、 ループの動きが一目で分かるようになっています。


       IDENTIFICATION DIVISION.
       PROGRAM-ID. SUMMARY-TRACE.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 I        PIC 9(2) VALUE 1.
       01 TOTAL    PIC 9(4) VALUE 0.
       PROCEDURE DIVISION.
           DISPLAY "=== PERFORMトレース開始 ==="
           PERFORM UNTIL I > 5
               ADD I TO TOTAL
               DISPLAY "現在のI:" I
               DISPLAY "現在の合計:" TOTAL
               ADD 1 TO I
           END-PERFORM
           DISPLAY "=== PERFORMトレース終了 ==="
           STOP RUN.

このように、PERFORMの中でDISPLAY文を使って値を確認することで、 繰り返し処理の理解が深まり、バグの原因も見つけやすくなります。 最初は表示が多く感じるかもしれませんが、 学習段階では積極的にトレースを行うことで、 COBOLの処理構造を自然に身につけることができます。

先生と生徒の振り返り会話

生徒

「PERFORMって、ただ繰り返すだけの命令だと思っていましたけど、 DISPLAYで中身を確認すると、動きがよく分かりますね。」

先生

「そうですね。PERFORMトレースを意識すると、 何回目の処理なのか、どんな計算をしているのかが一目で分かります。」

生徒

「無限ループになったときも、カウンタの値を見れば、 すぐに原因が分かりそうです。」

先生

「その通りです。実務のCOBOL開発でも、 PERFORMとDISPLAYを組み合わせたトレースはとても重要ですよ。」

生徒

「これからはPERFORMを書くときに、 動きを確認しながら進めるようにしてみます。」

先生

「それができれば、ループ処理への理解が一気に深まります。 PERFORMトレースを味方につけて、COBOL学習を続けていきましょう。」

カテゴリの一覧へ
新着記事
New1
C#
C#のLINQでAny・Allなど条件確認メソッドの使い方を完全ガイド!初心者でもわかるデータ検証
New2
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New3
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
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#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決
No.8
Java&Spring記事人気No8
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう