COBOLの制御構造を完全ガイド!初心者でもわかるif文・PERFORM・条件分岐の使い方
生徒
「COBOLで、同じことを何回も繰り返したり、条件によって処理を変えるにはどうしたらいいんですか?」
先生
「COBOLでは、制御構造を使って、それを実現できますよ。たとえばIF文やPERFORM文が使われます。」
生徒
「難しそうに聞こえますけど、初心者でも使えるんでしょうか?」
先生
「大丈夫です!これから、わかりやすく順番に解説していきましょう。」
1. 制御構造ってなに?
制御構造(せいぎょこうぞう)とは、プログラムが命令を実行していく「順序」や「流れ」をコントロールするための仕組みです。通常、プログラムは記述された順番に上から下へと実行されますが、それだけでは複雑なシステムを作ることはできません。
プログラミング未経験の方でも、日常の行動に置き換えるとイメージしやすくなります。たとえば、「雨が降っていたら傘を差す(条件分岐)」、「駅まで10歩歩く(繰り返し)」といった判断や動作のルールこそが、プログラムにおける制御構造なのです。
- 順次(じゅんじ): 上から下へ順番に処理する(基本の形)
- 選択(せんたく): 条件によって進む道を変える(IF文など)
- 反復(はんぷく): 決まった回数や条件まで繰り返す(PERFORM文など)
COBOLでよく使われる具体的な命令は以下の通りです:
IF文:条件に合わせて処理を枝分かれさせるPERFORM文:特定の処理を何度も繰り返し実行するGO TO文:指定した場所へジャンプする(※現代ではプログラムの流れが追いにくくなるため、多用は避けられます)
例えば、もっともシンプルな「順次(順番どおりの実行)」をCOBOLのコードで見ると以下のようになります。
DISPLAY "朝起きました。"
DISPLAY "顔を洗いました。"
DISPLAY "朝ごはんを食べました。"
このように一行ずつ実行される流れに対し、条件によって「もしお腹が空いていたら、朝ごはんを食べる」といった変化を加えるのが、これから解説する制御構造の役割です。この仕組みをマスターすることで、コンピュータに複雑な判断を任せることができるようになります。
2. IF文で条件に応じて処理を分ける
COBOLプログラミングにおいて、最も頻繁に使用されるのがこのIF文です。「もし~なら、○○する」という条件分岐(じょうけんぶんき)をプログラムに持たせるための非常に重要な命令です。
たとえば、システムで「在庫が0個なら、注文不可と表示する」といった判断を自動で行わせたい場合に利用します。プログラミング未経験の方でも、日常の「もし雨が降ったら傘を持つ」という思考と同じだと考えれば、決して難しくありません。
COBOLでは、条件の始まりをIF、条件を満たした時の処理をTHEN、そして命令の終わりをEND-IFというキーワードでサンドイッチのように囲んで記述します。
具体的なサンプルコードを見てみましょう。ここでは「テストの点数が80点以上なら、合格と表示する」というシンプルな処理を例にします。
IF SCORE >= 80 THEN
DISPLAY "合格です!おめでとうございます。"
END-IF
このコードのポイントを詳しく解説します:
- IF SCORE >= 80:「もし変数の値が80以上なら」という条件を指定しています。
- THEN:「その条件が正しい(真である)ときに、次の処理を行いなさい」という合図です。
- DISPLAY ...:画面にメッセージを表示する具体的な命令(処理)です。
- END-IF:ここでIF文の範囲が終了することをコンピュータに伝えます。これを忘れると、どこまでが条件付きの処理かわからなくなり、エラーの原因になります。
実行結果は以下のようになります(SCOREが85点の場合)。
合格です!おめでとうございます。
このように、IF文をマスターすることで、状況に合わせて柔軟に動くスマートなプログラムを作成できるようになります。
3. IF-ELSEで「それ以外」の処理を分岐させる
条件に当てはまる場合だけでなく、「条件に当てはまらなかった場合(それ以外)」の処理もセットで作りたいときは、ELSE句を使用します。これにより、プログラムの分岐をさらに細かくコントロールできるようになります。
プログラミング未経験の方でも、「もし信号が青なら進む、そうでなければ(ELSE)止まる」という日常のルールをイメージすると分かりやすいでしょう。COBOLではこの「そうでなければ」をELSEというキーワード一つで表現できます。
IF(もし〜なら)、THEN(そのときはこれをする)、ELSE(そうでなければこれをする)、END-IF(ここで終わり)という順番で記述します。
具体的な例として、入力された年齢に応じて「成人」か「未成年」かを自動で判別するサンプルコードを見てみましょう。
IF AGE >= 20 THEN
DISPLAY "あなたは成人です。"
ELSE
DISPLAY "あなたは未成年です。"
END-IF
このプログラムの動きを詳しく解説します:
- IF AGE >= 20:AGE(年齢)という変数の値が20以上かどうかをチェックします。
- THEN部分:条件が正しい場合(20歳以上のとき)は、「あなたは成人です。」と画面に表示します。
- ELSE部分:条件が正しくない場合(20歳未満のとき)は、こちらの「あなたは未成年です。」という表示処理が実行されます。
- END-IF:一連の条件分岐処理がここで完了したことを示します。
実行結果は以下のようになります(AGEが18の場合)。
あなたは未成年です。
このように、IF-ELSEを使いこなすことで、「AかBか」という2択の判断をコンピュータに正確に実行させることが可能になります。業務システムでは、エラーチェックやデータの仕分けなど、あらゆる場面でこの形が使われています。
4. PERFORMで処理を繰り返す
PERFORMは、同じ処理を何回も繰り返すための命令です。たとえば、「こんにちは」を5回表示したい場合は、次のように書きます。
PERFORM 5 TIMES
DISPLAY "こんにちは"
END-PERFORM
PERFORM ○ TIMESと書くだけで、指定回数だけ同じ処理を実行してくれます。初心者でも覚えやすい書き方です。
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. 実行結果を確認してみよう
上の例(カウント表示)を実行すると、次のような結果が表示されます。
カウント:1
カウント:2
カウント:3
カウント:4
カウント:5
このように、PERFORM UNTILを使えば、条件に合わせた繰り返し処理ができます。
7. よくある間違いと注意点
- END-IFやEND-PERFORMの書き忘れが多いので注意しましょう。
- 変数の初期化(最初に値を入れること)を忘れると、思った通りに動きません。
- 条件式の比較記号(>=, =, <)は正しく使いましょう。
初心者の場合は、1行ごとに意味を確認しながら書くのがコツです。
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を扱ううえで必ず役立つので、ぜひ繰り返し練習してみてください。」
生徒「はい!もっといろいろ試してみます!」