COBOLのif文に出てくるNEXT SENTENCEとCONTINUEの違いとは?初心者でもやさしく理解!
生徒
「COBOLでif文のあとに書かれているNEXT SENTENCEとCONTINUEって、どう違うんですか?」
先生
「いい質問ですね。これはCOBOLの制御構造(プログラムの流れを決める仕組み)に関係するキーワードです。初心者の方でもわかるように、身近な例を交えて説明していきますね。」
生徒
「お願いします!いまいち違いがピンとこなくて…」
先生
「それでは、NEXT SENTENCEとCONTINUEの違いをわかりやすく説明しましょう!」
1. NEXT SENTENCEとは?
NEXT SENTENCEは、COBOLのIF文などで条件が「偽(false)」の場合に使われるキーワードです。
この命令は「次のピリオド(.)までスキップして進む」という意味です。
たとえば、学校の先生が「この条件に当てはまらなければ、次の話題に移りますよ」と言っているような感じです。
では、簡単な例を見てみましょう。
IF AGE < 20 THEN
DISPLAY "未成年です。"
ELSE
NEXT SENTENCE
DISPLAY "年齢の確認が終わりました。"
このコードでは、AGE(年齢)が20未満なら「未成年です。」と表示します。
それ以外(20以上)なら、NEXT SENTENCEで「次のピリオドまでスキップ」されるので、「DISPLAY "年齢の確認が終わりました。"」は実行されません。
(AGE = 18 の場合)
未成年です。
年齢の確認が終わりました。
(AGE = 25 の場合)
年齢の確認が終わりました。
実はこの結果、少し分かりにくいですよね。NEXT SENTENCEはどこまでが次の文(SENTENCE)なのかを正確に理解していないと、予期しない動作になることもあります。
2. CONTINUEとは?
CONTINUEは「何もしないで次に進む」という意味のキーワードです。つまり、IF文の中で何の処理も書かない場合に使います。
たとえば、こんなイメージです。
先生が「この条件に当てはまらないなら、そのまま次の行に進みますね」と言っているのと同じです。
IF AGE < 20 THEN
DISPLAY "未成年です。"
ELSE
CONTINUE
DISPLAY "年齢の確認が終わりました。"
(AGE = 18 の場合)
未成年です。
年齢の確認が終わりました。
(AGE = 25 の場合)
年齢の確認が終わりました。
このように、CONTINUEはNEXT SENTENCEとは違って、何もスキップせずに次の処理にそのまま進むのが特徴です。
3. NEXT SENTENCEとCONTINUEの違いを身近な例で比較
ここで、もっとわかりやすく「会話形式の例え」で比べてみましょう。
- NEXT SENTENCE:「この話、違うなら飛ばして次の章へ行きましょう」
- CONTINUE:「特に言うことはないので、次の行へ行きますね」
たとえば、次のような物語の流れを想像してください。
ある登場人物が「もし雨が降っていたら傘をさす、そうでなければ(何もしないで)そのまま歩く」。
この場合、何もしないのでCONTINUEがぴったりです。
一方、「もし雨が降っていたら傘をさす、そうでなければ次の話に移る」といった場合はNEXT SENTENCEが使えます。
4. 使用上の注意とおすすめ
NEXT SENTENCEは便利な反面、バグの原因になりやすいという特徴もあります。
なぜなら、「次の文」とはどこまでなのかを判断するのが難しく、思わぬ場所までスキップされることがあるからです。
プログラミング初心者には、最初はCONTINUEを使うことをおすすめします。理由は以下のとおりです:
- プログラムの流れがわかりやすい
- 思わぬスキップを防げる
- 保守(あとから修正)しやすい
現代のCOBOLでは、NEXT SENTENCEはあまり使われなくなってきています。
そのかわりにCONTINUEやIF〜END-IF構文を使ったほうが安全で読みやすいコードになります。
5. まとめておさらい!NEXT SENTENCEとCONTINUEのポイント
| キーワード | 動作の説明 | 初心者へのおすすめ度 |
|---|---|---|
NEXT SENTENCE |
次の文(ピリオド)までスキップする | △(少し難しい) |
CONTINUE |
何もせず次の行に進む | ◎(おすすめ) |
まとめ
COBOLを学びはじめたばかりの人にとって、IF文の中に登場するNEXT SENTENCEとCONTINUEは、とてもよく似た見た目をしているため、はじめのうちは同じ意味だと思われがちです。しかし、実際にはどちらも全く異なる動き方を持っており、違いを理解して書き分けることで、プログラムの流れが格段に読みやすくなります。特に業務系システムでは、年齢判定、数値チェック、データの分岐処理など複雑な条件分岐が登場するため、この二つの言葉を正確に理解しておくことはとても大切です。
まず、NEXT SENTENCEは「次の文(ピリオドまで)を飛ばす」という特別な動作を持っています。文の単位がどこで終わるかは、コードを丁寧に読んでいないと見落としがちで、思わぬ場所までスキップしてしまうこともあります。そのため、大規模なシステムや、長年保守されているCOBOLプログラムでは、この命令が原因で予期せぬ挙動が起こり、修正に時間がかかる場面もあります。
一方、CONTINUEは「何もせず、そのまま次の処理へ進む」というとても単純な命令です。スキップせず、コードを自然な流れで読み進めることができるため、現代的な記述においてはこちらがよく使われています。特に、条件によってメッセージを出すか出さないかだけを切り替える場面や、不要な処理を入れずに分岐だけ残すときに役立ちます。
ここで、ふたつの違いを簡単なサンプルコードで振り返ってみましょう。
NEXT SENTENCEの例
IF SCORE < 60
DISPLAY "再試験です。"
ELSE
NEXT SENTENCE
DISPLAY "判定が終わりました。"
上の例では、点数が六十未満であれば注意文が表示され、そうでなければNEXT SENTENCEで次の文まで飛ばされるため、DISPLAY "判定が終わりました。"が実行されなくなります。条件によって結果が変わる面白さがありますが、ピリオドの位置を誤ると、意図せず複数の処理がまるごと飛ばされることもあるため、注意が必要です。
CONTINUEの例
IF SCORE < 60
DISPLAY "再試験です。"
ELSE
CONTINUE
DISPLAY "判定が終わりました。"
CONTINUEを使った場合は、条件に合わないときにもそのまま次の行へ進むため、結果の流れが予測しやすくなります。処理の意図も読みやすく、初心者にはとても使いやすい書き方です。
COBOLの世界には、何十年も前に書かれたプログラムがいまも動いていることが多く、条件分岐の書き方一つで読みやすさが大きく変わります。とくに金融や自治体など、厳密な業務処理の現場では、プログラムの流れを正確に追う必要があります。その意味でも、NEXT SENTENCEは慎重に使い、可能であればCONTINUEを選ぶという考え方が広く受け入れられています。
また、最近のCOBOLではIF ~ END-IFを使う書き方が主流になっています。END-IFがあることで、どこまでが条件の範囲なのかがとても明確になります。
IF AGE < 20
DISPLAY "未成年です。"
ELSE
CONTINUE
END-IF
DISPLAY "確認が完了しました。"
このような書き方は読みやすく、保守性も高いスタイルです。将来、別の人がプログラムを読むときにも安心して理解できるというメリットがあります。現場では後輩のプログラマやメンテナンス担当者もコードを触るため、読みやすいプログラムはそれだけで価値があります。
ここまで学んだ内容を整理すると、次の三つがポイントになります。
- NEXT SENTENCEは文単位のジャンプで、思わぬスキップが起こる可能性がある
- CONTINUEは何もせずに次の処理へ進むので、安全で読みやすい
- IF ~ END-IF構文を使うとコードの範囲が明確になり、保守性が向上する
COBOLの学習では、こうした細かい違いを理解しながら進むことで、プログラム全体の流れをつかむ力が身についていきます。単なる文法として丸暗記するよりも、「どういう場面で使うと便利なのか」「間違えるとどんなトラブルになるのか」を知っておくと、現場でも役立つ知識となっていきます。
生徒
「NEXT SENTENCEは便利そうだけど、ちょっとこわい動きをするってことがわかりました。」
先生
「そうなんです。はじめのうちは CONTINUE を使ったほうが流れが自然なので、読みやすいプログラムになりますよ。」
生徒
「たしかに、CONTINUEだとそのまま下に進むって考えればいいから迷わなくなりますね。」
先生
「慣れてきたら、既存のコードでNEXT SENTENCEが出てきても落ち着いて読めるようになります。今日の内容は、保守や改修にとっても大切な知識です。」
生徒
「これからIF文を見るときは、文の終わりと処理の流れも意識して書くようにします!」
先生
「それはとてもいい心がけですね。COBOLは細かいルールをていねいに書くほど、正確に動いてくれますよ。」