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

COBOLの制御構造を完全ガイド!初心者でもわかるif文・PERFORM・条件分岐の使い方

制御構造を使ったサンプルプログラム例まとめ
制御構造を使ったサンプルプログラム例まとめ

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

生徒

「COBOLで、同じことを何回も繰り返したり、条件によって処理を変えるにはどうしたらいいんですか?」

先生

「COBOLでは、制御構造を使って、それを実現できますよ。たとえばIF文やPERFORM文が使われます。」

生徒

「難しそうに聞こえますけど、初心者でも使えるんでしょうか?」

先生

「大丈夫です!これから、わかりやすく順番に解説していきましょう。」

1. 制御構造ってなに?

1. 制御構造ってなに?
1. 制御構造ってなに?

制御構造(せいぎょこうぞう)とは、プログラムの実行の流れをコントロールする仕組みです。COBOLでは、たとえば「もし○○なら〜する」「この処理を5回くりかえす」などを実現するために使われます。

よく使われる制御構造は以下のとおりです:

  • IF〜THEN:条件によって処理を分ける(分岐)
  • PERFORM:ある処理を何度も繰り返す(繰り返し)
  • GO TO:指定した場所へ処理を移動させる(ただし多用は非推奨)

今回は、この中から「IF文」「PERFORM文」を中心に見ていきます。

2. IF文で条件に応じて処理を分ける

2. IF文で条件に応じて処理を分ける
2. IF文で条件に応じて処理を分ける

IF文は「もし○○だったら〜する」というように、条件によって処理を切り替えるための命令です。

たとえば、年齢が20歳以上なら「成人です」と表示するプログラムは、以下のようになります。


IF AGE >= 20 THEN
    DISPLAY "あなたは成人です。"
END-IF

IFのあとに条件を書いて、THENで実行内容をつなぎ、最後にEND-IFで終わらせます。

IF(もし)」→「THEN(そうなら)」→「END-IF(終わり)」と覚えるとわかりやすいです。

3. IF〜ELSEで条件によって処理を分岐

3. IF〜ELSEで条件によって処理を分岐
3. IF〜ELSEで条件によって処理を分岐

条件に合わない場合の処理も書きたいときは、ELSEを使います。たとえば、20歳以上なら「成人」、そうでなければ「未成年」と表示したい場合は以下のように書きます。


IF AGE >= 20 THEN
    DISPLAY "あなたは成人です。"
ELSE
    DISPLAY "あなたは未成年です。"
END-IF

このように、IF〜ELSEを使うことで、条件によって処理を分けることができます。

4. PERFORMで処理を繰り返す

4. PERFORMで処理を繰り返す
4. PERFORMで処理を繰り返す

PERFORMは、同じ処理を何回も繰り返すための命令です。たとえば、「こんにちは」を5回表示したい場合は、次のように書きます。


PERFORM 5 TIMES
    DISPLAY "こんにちは"
END-PERFORM

PERFORM ○ TIMESと書くだけで、指定回数だけ同じ処理を実行してくれます。初心者でも覚えやすい書き方です。

5. 条件付きのPERFORM(条件が成り立つ間だけ繰り返す)

5. 条件付きのPERFORM(条件が成り立つ間だけ繰り返す)
5. 条件付きのPERFORM(条件が成り立つ間だけ繰り返す)

繰り返しを、ある条件のあいだだけ実行したいときには、PERFORM UNTILを使います。これは「〜になるまで繰り返す」という意味です。

たとえば、カウントを1から5まで表示したいときは、次のように書きます。


MOVE 1 TO COUNT
PERFORM UNTIL COUNT > 5
    DISPLAY "カウント:" COUNT
    ADD 1 TO COUNT
END-PERFORM

このように、UNTIL COUNT > 5は「カウントが5を超えるまで」という意味になります。

ADD 1 TO COUNTで、毎回カウントの数を1ずつ増やしています。

6. 実行結果を確認してみよう

6. 実行結果を確認してみよう
6. 実行結果を確認してみよう

上の例(カウント表示)を実行すると、次のような結果が表示されます。


カウント:1
カウント:2
カウント:3
カウント:4
カウント:5

このように、PERFORM UNTILを使えば、条件に合わせた繰り返し処理ができます。

7. よくある間違いと注意点

7. よくある間違いと注意点
7. よくある間違いと注意点
  • END-IFEND-PERFORMの書き忘れが多いので注意しましょう。
  • 変数の初期化(最初に値を入れること)を忘れると、思った通りに動きません。
  • 条件式の比較記号(>=, =, <)は正しく使いましょう。

初心者の場合は、1行ごとに意味を確認しながら書くのがコツです。

8. こんな使い方もできる!組み合わせて使う制御構造

8. こんな使い方もできる!組み合わせて使う制御構造
8. こんな使い方もできる!組み合わせて使う制御構造

制御構造は組み合わせて使うこともできます。たとえば、IF文の中にPERFORMを書くことも可能です。

以下は、「年齢が18歳以上のときだけ、3回メッセージを表示する」例です。


IF AGE >= 18 THEN
    PERFORM 3 TIMES
        DISPLAY "18歳以上の方にメッセージを送信します。"
    END-PERFORM
END-IF

このように、条件と繰り返しを組み合わせることで、実用的な処理ができるようになります。

まとめ

まとめ
まとめ

COBOLでよく使われる制御構造であるIF文やPERFORM文は、業務システムのような大規模で複雑な処理を扱う場面で欠かせない基本要素です。これらの制御構造を正しく理解することで、条件分岐や繰り返しの処理を柔軟に組み立てられるようになり、実際の開発現場でも読みやすく管理しやすいロジックを作りやすくなります。とくにIF文は条件に応じた処理の切り替えを直感的に書ける仕組みとして広く使われており、PERFORM文は同じ処理を複数回実行したり、条件に応じて繰り返す処理を表現できる重要な構文です。これらを組み合わせることで、入力データのチェック、計算処理、レコードの検証、繰り返し出力などさまざまな場面で役立ちます。 またCOBOLではEND-IFやEND-PERFORMを明示的に記述する必要があり、これらの終端を正しく書くことがプログラム全体の読みやすさと保守性を高めるうえで非常に重要です。条件が複雑な場合や繰り返し処理が絡む場合でも、段階的に書くことで安全に処理を積み重ねていけるのがCOBOLの特徴です。さらに繰り返しの中にIF文を入れたり、IF文の中にPERFORMを置いたりといった構造を柔軟に作れるため、業務に特化した処理でも無理なく表現できます。初心者がつまずきやすい変数の初期化や条件式の比較方法も、基本を理解しておくことでスムーズに実装できるようになります。 COBOLの制御構造は一見古典的に見えるかもしれませんが、現代の金融システムや基幹業務システムの土台として今も多く利用されており、確実で安定した処理を構築するための強力な仕組みです。今回学んだIF文、ELSE文、PERFORM TIMES、PERFORM UNTILの基本を押さえることで、実際の業務ロジックを自分の手で作り上げる第一歩となります。プログラムの流れをしっかり意識しながら書く習慣を身につければ、将来さらに複雑な処理を組む場面でも応用しやすくなるでしょう。

サンプルプログラムで理解を深めよう

以下は条件判定と繰り返しの両方を組み合わせたサンプルです。特定の条件を満たしたときだけ特定回数の処理を行う典型的な業務ロジックの例です。


MOVE 25 TO AGE.
IF AGE >= 20 THEN
    DISPLAY "対象年齢です。特別処理を実行します。"
    PERFORM 4 TIMES
        DISPLAY "特別処理を実行中です..."
    END-PERFORM
ELSE
    DISPLAY "対象外の年齢です。処理を終了します。"
END-IF.

このようにIF文とPERFORM文を自然に組み合わせることで、業務処理でよく使われるチェック→処理→繰り返しという流れを素直に表現できます。PERFORM TIMESを使うと回数が明確になり、作業ログや定型処理の自動反復に便利です。IF文による条件分岐とあわせて使うことで、処理の対象条件がより明確になります。

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

生徒「IF文やPERFORM文がこんなに柔軟に使えるとは思いませんでした。条件に応じて処理を切り替えたり、決まった回数だけ繰り返す仕組みがあると、とても便利ですね。」

先生「そうですね。COBOLでは業務処理を正確に表現するために、こういった制御構造がとても重要になります。IF文は条件判断の基本、PERFORM文は繰り返しの基本として理解しておくと応用範囲が広がりますよ。」

生徒「たしかに、IFの中に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#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.2
Java&Spring記事人気No2
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
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#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法