COBOLのif文の使い方を完全ガイド!初心者でもわかる乱数生成
生徒
「COBOLで条件によって分岐する方法ってありますか?」
先生
「COBOLでは、if文を使って、簡単に条件分岐することができます。」
生徒
「条件って、例えば『年齢が20歳以上なら大人』みたいなことですか?」
先生
「その通りです!そういった判断には“比較演算子”を使います。今回はその使い方をじっくり学んでいきましょう。」
1. COBOLのif文と比較演算子の基本
COBOL(コボル)では、IF文を使って条件に応じた処理の分岐ができます。そのときに使うのが「比較演算子(ひかくえんざんし)」です。
比較演算子というのは、値と値を比べて「等しいか」「大きいか」「小さいか」などを判断するための記号やキーワードのことです。普段の会話で言うと、「~より大きい」とか「~と同じ」といった表現にあたります。
2. COBOLの主な比較演算子一覧
COBOLで使われる比較演算子は、英語の単語を使うのが特徴です。下記の表にまとめました。
| 意味 | COBOLの書き方 | 例(AGEが20以上なら) |
|---|---|---|
| 等しい | = または EQUAL TO | IF AGE = 20 |
| 等しくない | NOT = または NOT EQUAL TO | IF AGE NOT = 20 |
| より大きい | > または GREATER THAN | IF AGE > 20 |
| より小さい | < または LESS THAN | IF AGE < 20 |
| 以上(以上を含む) | >= または GREATER THAN OR EQUAL TO | IF AGE >= 20 |
| 以下(以下を含む) | <= または LESS THAN OR EQUAL TO | IF AGE <= 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とか、英語で書かれているのが読みやすくて意外でした。数字だけじゃなくて文字列の比較も大事なんですね。」
先生
「その通り。文字列チェックは業務システムではよく登場するから、スペースだけの入力や空文字の扱いも必ず覚えておこうね。」
生徒
「はい!これなら乱数を使ったテストも自分で試してみられそうです!」
先生
「実際に動かしてみるのがいちばん理解が深まるから、ぜひいろいろ試してみてね。今日学んだ内容は、必ず実務で役に立つよ。」