COBOLのif文の使い方を完全ガイド!初心者でもわかる乱数生成
生徒
「COBOLで条件によって分岐する方法ってありますか?」
先生
「COBOLでは、if文を使って、簡単に条件分岐することができます。」
生徒
「条件って、例えば『年齢が20歳以上なら大人』みたいなことですか?」
先生
「その通りです!そういった判断には“比較演算子”を使います。今回はその使い方をじっくり学んでいきましょう。」
1. COBOLのif文と比較演算子の基本
COBOL(コボル)のプログラミングにおいて、特定の条件に合わせて処理を切り替える仕組みを「条件分岐」と呼び、これに欠かせないのがIF文です。そして、その判断基準を定めるのが「比較演算子(ひかくえんざんし)」という重要なツールです。
比較演算子とは、2つのデータ(例えば変数の中身や数値など)を突き合わせて、「AとBは同じか?」「AはBよりも大きいか?」といった関係性を調べるための記号や命令語のことです。日常会話で「予算が3000円以内なら買う」と判断するのと全く同じロジックを、プログラムに指示することができます。
プログラミングが初めての方でも安心してください。COBOLは他の言語に比べて「英語に近い文章」で記述できるため、パッと見て意味を理解しやすいのが大きなメリットです。まずは、最もシンプルな記述パターンを見てみましょう。
* もし点数(SCORE)が80点と同じなら「合格」と表示する例
IF SCORE = 80 THEN
DISPLAY "おめでとう!合格です。"
END-IF
このコードでは、「もしSCOREが80と等しければ、DISPLAY(表示)を実行しなさい」という命令を出しています。このように、条件の始まりをIF、終わりをEND-IFで囲むのがCOBOLの基本ルールです。この「=」の部分を書き換えるだけで、様々なパターン(~より大きい、~以外など)の判定が可能になります。
2. COBOLの主な比較演算子一覧と使い方
COBOLで条件分岐を作る際、中心となるのが「比較演算子」です。COBOLの最大の特徴は、記号(=, > など)だけでなく、「EQUAL TO」や「GREATER THAN」といった英語のキーワードを使って自然な文章のように記述できる点にあります。これにより、プログラミング未経験の方でも直感的にコードの意味を理解しやすくなっています。
まずは、よく使われる比較演算子を一覧表で確認しましょう。どちらの書き方を使ってもプログラムの動作は同じですが、プロジェクトのルールや好みに合わせて使い分けます。
| 意味 | 記号での書き方 | 英語(句)での書き方 | 例(もし~なら) |
|---|---|---|---|
| 等しい | = | IS EQUAL TO | IF SCORE = 100 |
| 等しくない | NOT = | IS NOT EQUAL TO | IF SCORE NOT = 0 |
| より大きい | > | IS GREATER THAN | IF AGE > 18 |
| より小さい | < | IS LESS THAN | IF AGE < 20 |
| 以上 | >= | GREATER THAN OR EQUAL TO | IF AGE >= 20 |
| 以下 | <= | LESS THAN OR EQUAL TO | IF AGE <= 15 |
初心者の方向けに、実際にどのように判定が行われるのか、簡単なサンプルプログラムを見てみましょう。例えば、「所持金(MONEY)が、商品の値段(PRICE)より多いかどうか」を判定する場合は以下のようになります。
* 所持金が値段より大きい(買える)場合の判定
IF MONEY GREATER THAN PRICE THEN
DISPLAY "この商品は購入可能です。"
ELSE
DISPLAY "お金が足りません。"
END-IF
このコードでは GREATER THAN を使うことで、「もし MONEY が PRICE よりも大きければ」という条件を英文のように記述しています。記号の > を使うよりも、後から読み返したときに「何を比較しているのか」が分かりやすいのがCOBOLの魅力です。
また、COBOLでは IS を省略して書くことも一般的です。例えば IF AGE IS EQUAL TO 20 は IF AGE EQUAL TO 20 と書いても正しく動作します。まずは自分が一番読みやすいと感じる書き方から覚えていきましょう。
3. COBOLでの比較演算子の使い方例
COBOLの比較演算子をより深く理解するために、具体的な活用シーンを想定したプログラムを見ていきましょう。プログラミングが初めての方でも、COBOLのコードは「英語の文章」を読む感覚で理解できるはずです。
具体例:年齢による成人判定
まずは、最もポピュラーな「数値の比較」の例です。ユーザーが入力した年齢(AGE)が20歳以上かどうかを判定し、条件に一致した場合だけメッセージを表示する仕組みを作ります。
* 年齢(AGE)が20以上(成人)かどうかを判定する
IF AGE >= 20 THEN
DISPLAY "あなたは成人です。"
END-IF
このプログラムのポイントを詳しく解説します。
- IF AGE >= 20 THEN:「もし AGE が 20 以上 ならば」という条件の開始を宣言しています。
>=は、20ちょうどの場合も含みます。 - DISPLAY ...:条件が正しい(真といいます)ときにだけ実行される命令です。
- END-IF:IF文の範囲がここで終わりであることを示します。これを忘れると、どこまでが条件分岐なのかコンピューターが判断できずエラーになります。
応用例:複数の条件で処理を分ける(ELSEの活用)
「条件に合わない場合」の処理も書きたいときは、ELSE(さもなければ)を組み合わせます。これにより、一つの判定で2つのルートを作ることができます。
* 18歳未満かどうかで案内を変える例
IF AGE < 18 THEN
DISPLAY "未成年の方は保護者の同意が必要です。"
ELSE
DISPLAY "お手続きを続行してください。"
END-IF
このように、比較演算子を一つ覚えるだけで、「特定の数値より大きいか小さいか」という柔軟な仕組みを簡単に構築できるようになります。日常の判断をそのままコードに落とし込めるのがCOBOLの大きな強みです。
4. COBOLのIF文では「=」と「EQUAL TO」は同じ意味?
結論から言うと、COBOLにおいて記号の=と、英文形式のEQUAL TOは全く同じ役割を果たします。どちらを使ってもプログラムの動作に違いはありません。これは、COBOLが「誰もが読みやすい事務処理用言語」として開発された背景があるためです。
例えば、特定の変数の値が一致しているかを確認したい場合、以下の2つの書き方が可能です。プログラミング未経験の方にとっては、どちらがしっくりくるか比較してみましょう。
* パターンA:数学的な記号「=」を使った書き方
IF AGE = 20 THEN
DISPLAY "ちょうど20歳ですね。"
END-IF
* パターンB:英語の文章に近い「EQUAL TO」を使った書き方
IF AGE EQUAL TO 20 THEN
DISPLAY "ちょうど20歳ですね。"
END-IF
最近のシステム開発現場では、記述が短くて済む=が好まれる傾向にありますが、銀行や保険会社の古いプログラム(レガシーシステム)を読み解く際には、EQUAL TOのような英文形式が多く登場します。COBOLは「IS」という単語を補ってIF AGE IS EQUAL TO 20と書くこともでき、より自然な英語に近い形でロジックを表現できるのが大きな強みです。
初心者のうちは、自分が直感的に「条件を判別している」と理解しやすい方を選んで使い始めてみましょう。どちらを選んでも、末尾にTHENを付け、処理の終わりにEND-IFを書くルールは共通です。
5. 「等しくない」を判定する「NOT」の使い方
プログラミングをしていると、「AとBが同じ時」だけでなく、「AとBが同じではない時」にだけ処理を行いたい場面がよくあります。COBOLでこの「等しくない」という条件を表すには、NOT = または NOT EQUAL TO を使用します。
これは否定の条件分岐と呼ばれ、特定のデータを除外して処理したい場合や、エラーチェックの際によく使われる非常に便利な書き方です。英語の「NOT(〜ではない)」をそのまま入れるだけなので、直感的に理解しやすいのが特徴です。
「等しくない」のサンプルプログラム
例えば、入力された年齢(AGE)が「20歳ではない」場合にのみ、特別な案内を表示するプログラムを考えてみましょう。プログラミング未経験の方でも、以下のコードを読めば「もしAGEが20と等しくなければ」という意図がすぐに読み取れるはずです。
* 年齢(AGE)が20歳以外(等しくない)かどうかを判定する
IF AGE NOT EQUAL TO 20 THEN
DISPLAY "あなたは20歳ではありません。"
DISPLAY "新成人のお祝い対象外です。"
END-IF
このコードのポイントを詳しく解説します。
- NOT EQUAL TO:記号で
NOT =と書いても同じ意味です。「左側の値と右側の値が一致しない」という条件を作ります。 - 処理の実行:AGEの中身が「19」や「21」であれば条件が成立し、メッセージが表示されます。「20」ぴったりの時は、何も表示されません。
- 自然な英文法:COBOLは
IF AGE IS NOT EQUAL TO 20のように、ISを補ってより自然な英語に近い形で書くことも可能です。
実行結果のイメージ
例えば、変数AGEに「18」が入っていた場合の出力は以下のようになります。
あなたは20歳ではありません。
新成人のお祝い対象外です。
このように、「一致しないこと」を条件にすることで、「特定の値以外はすべて同じ処理をさせる」といった効率的なプログラムを書くことができるようになります。
6. GREATER THANとLESS THANの使い方
COBOLでは「大きい」「小さい」といった比較も英語で表現できます。
IF AGE GREATER THAN 65 THEN
DISPLAY "シニア割引の対象です。"
END-IF
これは、「AGE(年齢)が65より大きければ、“シニア割引の対象です”と表示しなさい」という意味です。
7. 比較演算子を使うときの注意点
比較演算子を使うときに大切なポイントは以下の3つです。
- 比較する値のデータ型が合っていること(数字と文字は比べられません)
- スペルミスに注意すること(EQUALがEQULになっていないか確認)
- IF文の最後はEND-IFでしめる(忘れるとエラーになります)
8. 実行結果を確認しよう
それでは、AGEが18のときの実行結果を見てみましょう。
(何も表示されません)
AGEが18なので、IF AGE >= 20の条件には当てはまりません。したがって、中のDISPLAY文は実行されず、何も表示されません。
今度はAGEが21の場合を見てみましょう。
あなたは成人です。
まとめ
COBOLのif文と比較演算子を学んできた内容をふり返ると、条件分岐の書き方はとても直感的でありながら、細かい部分の理解が動作の正確さにつながるという点がたいへん印象深いと感じられます。とくに、年齢や点数といった数値データを使う場面では、条件の境目でどのように処理が分かれるかを明確に意識すると、プログラム全体の動作が一段と安定することがわかります。また、比較演算子の使い方を理解することで、より複雑な条件分岐にも落ち着いて取り組めるようになります。実務でデータ入力を扱うシステムでは、年齢、点数、数量、残高といった数値はもちろん、名前、文字列入力、コード値などの比較ロジックが頻繁に登場するため、ここで学んだ基礎がとても役立ちます。さらに、表示メッセージと組み合わせてプログラムの動きを目で追えるようにすることで、初心者でも落ち着いてデバッグが進められる環境がつくられます。
比較演算子には「等しい」「等しくない」「大きい」「小さい」「以上」「以下」などがあり、英語表記のEQUAL TO、NOT =、GREATER THAN、LESS THANなどがそのまま読みやすい形で使えるため、他言語に比べてもCOBOLの条件式は素直で理解しやすいという特徴があります。さらに、COBOLでは数値と文字列のデータ型を正しく扱うことがとても大切であり、IF文の前に変数がどの型で定義されているかを理解しておくことが重要です。比較する対象が文字列の場合はスペースや空文字の扱いが結果に影響するため、文字列処理の注意点を忘れずに意識しておくと、予期せぬバグが防ぎやすくなります。こうした細かなポイントは、実際にコードを書いて条件分岐を試すことで、より深く理解できるようになります。
また、COBOLのIF文はEND-IFで必ず閉じるという構造を持つため、プログラムの可読性がとても高く、条件ごとの処理がどこからどこまでかが視覚的に理解しやすいという利点があります。複数の条件を組み合わせるときにも、ELSEやELSE IFといった構成を使うことで処理の流れが自然と整理されるため、仕様の変更にも強い柔軟な書き方ができるようになります。処理が複雑になるほど、IF文の並びを整え、正しい比較演算子を選ぶことで、システム全体の動作が安定し、保守もしやすくなります。こうした基礎をしっかりおさえておくことは、COBOLだけでなく他のプログラミング言語にも応用が効く大変重要な学習となります。
さらに、今回は条件分岐の理解に加えて、乱数を使った処理にもふれました。COBOLで乱数を扱う場面は限定的ではありますが、データチェックやテスト環境の動作確認などにおいて非常に便利な場面が多くあります。乱数によって動作にゆらぎが出ることで、条件分岐のテストが広い範囲で行えるため、プログラムの安定性を高めるのにも役立ちます。とくに、比較演算子と組み合わせることで、シミュレーション処理や自動判定ロジックなどにも応用が可能です。COBOLは事務処理向けの言語というイメージがありますが、このように工夫次第でさまざまな処理が書ける柔軟な言語という面も持っています。
サンプルプログラムでもう一度復習しよう
下記に、今回学んだ比較演算子を活かしたシンプルなプログラムの例を用意しました。実際に動かしてみると、条件がどのように判定されるかをより深く理解できます。
IDENTIFICATION DIVISION.
PROGRAM-ID. IF-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 AGE PIC 99.
PROCEDURE DIVISION.
DISPLAY "年齢を入力してください:".
ACCEPT AGE.
IF AGE >= 20 THEN
DISPLAY "あなたは成人です。".
ELSE
DISPLAY "あなたは未成年です。".
END-IF.
IF AGE GREATER THAN 65 THEN
DISPLAY "シニア割引の対象です。".
END-IF.
IF AGE NOT = 20 THEN
DISPLAY "20歳ではありません。".
END-IF.
STOP RUN.
このように、IF文と比較演算子を組み合わせることで、年齢による判定や条件チェックが簡単に書けることがわかります。実際の業務システムでは、これらに加えて複数の条件を同時に扱ったり、データの形式チェックを行ったりといった処理も出てきますが、基本は今回学んだ考え方の応用です。基礎をしっかり理解しておけば、より複雑なプログラムも落ち着いて書けるようになります。
生徒
「先生、今日の条件分岐の学習で、IF文ってこんなに便利だと初めて知りました!」
先生
「そうだね。IF文はプログラムの判断を左右する大切な部分だから、比較演算子とセットで理解しておくと、とても強力な武器になるよ。」
生徒
「EQUAL TOとかGREATER THANとか、英語で書かれているのが読みやすくて意外でした。数字だけじゃなくて文字列の比較も大事なんですね。」
先生
「その通り。文字列チェックは業務システムではよく登場するから、スペースだけの入力や空文字の扱いも必ず覚えておこうね。」
生徒
「はい!これなら乱数を使ったテストも自分で試してみられそうです!」
先生
「実際に動かしてみるのがいちばん理解が深まるから、ぜひいろいろ試してみてね。今日学んだ内容は、必ず実務で役に立つよ。」