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プログラムの中で、比較演算子をどのように使うかを見ていきます。年齢を使ったシンプルな例で学んでいきましょう。
この例では、年齢が20歳以上なら「あなたは成人です。」と表示するプログラムです。
IF AGE >= 20 THEN
DISPLAY "あなたは成人です。"
END-IF
このコードの意味を簡単に言うと、「もしAGE(年齢)が20以上だったら、『あなたは成人です。』と画面に表示しなさい」ということです。
4. COBOのif文では「=」と「EQUAL TO」は同じ?
はい、COBOLでは=とEQUAL TOは、どちらも「等しい」を意味する比較演算子です。ですので、次の2つは同じ意味になります。
IF AGE = 20 THEN
DISPLAY "ちょうど20歳ですね。"
END-IF
IF AGE EQUAL TO 20 THEN
DISPLAY "ちょうど20歳ですね。"
END-IF
どちらを使っても問題ありませんが、=のほうがシンプルで初心者には読みやすいかもしれません。
5. 「等しくない」を書くには?
「等しくない」、つまり「違う」という意味を表すには、NOT =やNOT EQUAL TOを使います。
たとえば、年齢が20歳でない場合にメッセージを表示するには、こう書きます。
IF AGE NOT = 20 THEN
DISPLAY "20歳ではありません。"
END-IF
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とか、英語で書かれているのが読みやすくて意外でした。数字だけじゃなくて文字列の比較も大事なんですね。」
先生
「その通り。文字列チェックは業務システムではよく登場するから、スペースだけの入力や空文字の扱いも必ず覚えておこうね。」
生徒
「はい!これなら乱数を使ったテストも自分で試してみられそうです!」
先生
「実際に動かしてみるのがいちばん理解が深まるから、ぜひいろいろ試してみてね。今日学んだ内容は、必ず実務で役に立つよ。」