【COBOL】CONTINUE文完全ガイド|「何もしない」の意味・NEXT SENTENCEとの違い・EVALUATE/IF活用パターン

COBOLで「何もしない」ことを明示する命令がCONTINUE文です。EVALUATE文のWHEN OTHERで使うのが最もよく知られていますが、IF文・PERFORM文・その他の文脈でも有効です。また旧来のCOBOLコードには「NEXT SENTENCE」という似た用途の命令が登場しますが、CONTINUEとは動作が根本的に異なり、使い誤ると予期しないバグの原因になります。

この記事ではCONTINUE文の正確な動作・NEXT SENTENCEとの違い・EVALUATE/IF/PERFORMでの活用パターン・「何もしない」が設計上有効な場面を網羅します。EVALUATE文の構文全体(THRU・ALSO・EVALUATE TRUE・88レベル活用)についてはEVALUATE文完全ガイドをご覧ください。

この記事でわかること

  • CONTINUE文の正確な動作(何もせず次の文へ進むだけ)
  • NEXT SENTENCEとCONTINUEの致命的な違い
  • EVALUATE文でCONTINUEを使う全パターン(WHEN OTHER・特定条件スキップ・プレースホルダー)
  • IF文でCONTINUEを使って可読性を上げるパターン
  • 「何もしない」が設計上必要になる場面と正しい使い分け
  • 許容エラー処理・レコードフィルタリング・状態マシンの実践パターン
スポンサーリンク

CONTINUE文とは

CONTINUE文は「何も処理せず次の文へ進む」だけの命令です。他言語でいうno-op(ノーオペレーション)に相当します。

CONTINUE文の構文
*  CONTINUE文の構文
   CONTINUE.

*  どの文脈でも使用できる
   IF  条件
       CONTINUE    *> 何もしない(次の文へ)
   END-IF

   EVALUATE 変数
       WHEN 値
           CONTINUE  *> 何もしない
       WHEN OTHER
           CONTINUE  *> 何もしない
   END-EVALUATE
項目 説明
動作 何もせず、次の文(CONTINUE直後の文)へ制御が移る
使える場所 IF・EVALUATE・PERFORM・SEARCH・その他あらゆる文脈で使用可能
用途 ①空のWHEN/ELSEブランチの明示 ②将来の実装のプレースホルダー ③条件の否定を避けた可読性向上
COBOL標準 COBOL 85以降の標準規格。すべての現代COBOLコンパイラで使用可能

NEXT SENTENCEとCONTINUEの違い(非常に重要)

旧来のCOBOLコードにはNEXT SENTENCEという命令があり、「何もしない」目的で使われていましたが、CONTINUEとは動作が根本的に異なります。混同すると深刻なバグになります。

命令 動作 制御の移動先 評価
CONTINUE 何もせず次の文へ進む CONTINUE直後の命令が実行される 現代COBOLの推奨
NEXT SENTENCE 次のピリオド(.)の後の文へジャンプ ピリオドまでの命令をすべてスキップしてしまう COBOL 2002で非推奨(deprecated)
NEXT SENTENCEは危険:意図しない処理スキップが起きる
COBOLでは.(ピリオド)がセンテンスの終端です。NEXT SENTENCEはIF/EVALUATEブロックの途中に置かれた場合、そのブロック全体を飛び越えて最寄りのピリオドの後へ移動します。END-IF・END-EVALUATEの後まで含む大きなブロックをまるごとスキップする恐れがあり、「動いているように見えるが実は処理が抜けている」バグを生みやすいです。新規コーディングではNEXT SENTENCEを使わずCONTINUEを使いましょう。
NEXT SENTENCEの危険な動作を示す例
       WORKING-STORAGE SECTION.
       01 WS-FLAG   PIC X VALUE 'N'.
       01 WS-COUNT  PIC 9(5) VALUE 0.

       PROCEDURE DIVISION.
      *=== NGパターン: NEXT SENTENCEの意図しない動作 ===
           IF WS-FLAG = 'N'
               NEXT SENTENCE    *> 次のピリオド(.)まで全部スキップ!
           ELSE
               DISPLAY 'フラグあり'
           END-IF
           ADD 1 TO WS-COUNT.   *> ← このピリオドまで飛ぶ!
      *   上記で WS-FLAG = 'N' なら ELSE句の DISPLAY も
      *   ADD 1 TO WS-COUNT も実行されずにピリオドの後へ!

      *=== OKパターン: CONTINUEを使う ===
           IF WS-FLAG = 'N'
               CONTINUE         *> 何もせず次の文(ADD)へ進む
           ELSE
               DISPLAY 'フラグあり'
           END-IF
           ADD 1 TO WS-COUNT    *> ← WS-FLAG='N' でも実行される
           STOP RUN.

EVALUATE文でのCONTINUE活用パターン

WHEN OTHERでCONTINUEを使う(最も一般的な用法)

EVALUATE文でいずれの条件にもマッチしなかった場合に「何もしない」ことを意図として明示します。WHEN OTHERを省略しても動作は同じですが、CONTINUEを書くことで「意図的に何もしない」という設計意図が読む人に伝わります。

WHEN OTHER CONTINUE vs WHEN OTHER省略の使い分け
      *=== WHEN OTHER省略 ===
      *    動作は同じだが「他のケースを考慮していないかもしれない」と読める
           EVALUATE WS-STATUS-CODE
               WHEN '00' PERFORM NORMAL-PROCESS
               WHEN '01' PERFORM WARNING-PROCESS
               WHEN '02' PERFORM ERROR-PROCESS
           END-EVALUATE

      *=== WHEN OTHER CONTINUE ===
      *    「00/01/02以外は意図的に無視する」設計意図が明確
           EVALUATE WS-STATUS-CODE
               WHEN '00' PERFORM NORMAL-PROCESS
               WHEN '01' PERFORM WARNING-PROCESS
               WHEN '02' PERFORM ERROR-PROCESS
               WHEN OTHER CONTINUE    *> 03以降は想定内だが処理不要
           END-EVALUATE

特定条件をスキップする(CONTINUE + WHEN)

特定の値にマッチしたときだけ何もしない(処理をスキップする)パターンです。ほかの値には処理があり、その特定の値だけ例外的に無視したい場合に使います。

特定の値をCONTINUEでスキップする
       WORKING-STORAGE SECTION.
       01 WS-TRANS-TYPE   PIC X(2).
          88 TYPE-CANCEL  VALUE '09'.   *> キャンセルトランザクション
          88 TYPE-TEST    VALUE '99'.   *> テストデータ

       PROCEDURE DIVISION.
           EVALUATE WS-TRANS-TYPE
               WHEN '01'
                   PERFORM INSERT-PROCESS
               WHEN '02'
                   PERFORM UPDATE-PROCESS
               WHEN '03'
                   PERFORM DELETE-PROCESS
               WHEN '09'
                   CONTINUE   *> キャンセル済みは何もしない(スキップ)
               WHEN '99'
                   CONTINUE   *> テストデータは何もしない(スキップ)
               WHEN OTHER
                   PERFORM UNKNOWN-TYPE-ERROR
           END-EVALUATE

将来実装のプレースホルダーとして使う

設計段階やフェーズ1実装でWHEN句を先に作り、処理は後で実装する場合にCONTINUEを仮置きします。処理が未実装であることが明確になり、コンパイルも通ります。

プレースホルダーとしてのCONTINUE
       EVALUATE WS-PROCESS-PHASE
           WHEN 1
               PERFORM PHASE1-PROCESS    *> フェーズ1: 実装済み
           WHEN 2
               CONTINUE   *> TODO: フェーズ2は次回リリースで実装
           WHEN 3
               CONTINUE   *> TODO: フェーズ3は要件定義中
           WHEN OTHER
               PERFORM INVALID-PHASE-ERROR
       END-EVALUATE

EVALUATE TRUEとCONTINUEの組み合わせ

EVALUATE TRUEは複雑な条件分岐を整理するパターンです(詳細はEVALUATE文完全ガイド参照)。特定の条件を意図的に通過させたい場合にCONTINUEを使います。

EVALUATE TRUEでのCONTINUE活用
       WORKING-STORAGE SECTION.
       01 WS-AMOUNT      PIC 9(9)V99.
       01 WS-CUST-RANK   PIC X(1).
          88 RANK-GOLD   VALUE 'G'.
          88 RANK-SILVER VALUE 'S'.
       01 WS-ITEM-CODE   PIC X(4).
          88 FREE-ITEM   VALUE 'FREE'.

      * 割引適用ロジック: 一部の条件は割引なし(CONTINUE)
       EVALUATE TRUE
           WHEN FREE-ITEM
               CONTINUE           *> 無料品は割引計算不要(そのまま)

           WHEN RANK-GOLD AND WS-AMOUNT >= 10000
               COMPUTE WS-AMOUNT = WS-AMOUNT * 0.80    *> ゴールド20%引き

           WHEN RANK-SILVER AND WS-AMOUNT >= 5000
               COMPUTE WS-AMOUNT = WS-AMOUNT * 0.90    *> シルバー10%引き

           WHEN WS-AMOUNT >= 50000
               COMPUTE WS-AMOUNT = WS-AMOUNT * 0.95    *> 高額購入5%引き

           WHEN OTHER
               CONTINUE           *> 上記以外は定価のまま
       END-EVALUATE

IF文でのCONTINUE活用パターン

THEN CONTINUE で条件の否定を避ける

条件の否定(NOT)を使うより、肯定条件+CONTINUEで書いた方が読みやすくなる場合があります。特に88レベルを使うと意図がより明確になります。

NOT条件をCONTINUEで書き換えて可読性向上
      *=== NOT条件を使った書き方(読みにくいケース) ===
           IF WS-AMOUNT NOT > 0
               DISPLAY '金額が0以下です'
               ADD 1 TO WS-ERROR-CNT
           END-IF

      *=== THEN CONTINUEを使った書き方(肯定条件で読みやすい) ===
           IF WS-AMOUNT > 0
               CONTINUE    *> 正常: 何もしない
           ELSE
               DISPLAY '金額が0以下です'
               ADD 1 TO WS-ERROR-CNT
           END-IF

      *=== 88レベルと組み合わせるとさらに明確 ===
       01 WS-AMOUNT    PIC S9(9)V99 COMP-3.
          88 AMT-VALID VALUE 1 THRU 999999999.99.
          88 AMT-ZERO-OR-MINUS VALUE -999999999.99 THRU 0.

           IF AMT-VALID
               CONTINUE    *> 正常金額: 処理続行
           ELSE
               DISPLAY '金額エラー: ' WS-AMOUNT
               ADD 1 TO WS-ERROR-CNT
               MOVE 8 TO RETURN-CODE
               GOBACK
           END-IF

二重否定を避けてCONTINUEで整理する

ネストしたIFでNOT条件が続くと非常に読みにくくなります。条件を整理してCONTINUEを使うことで、コードの意図がはっきりします。

二重否定をCONTINUEで解消する
      *=== 読みにくい二重否定(NG例) ===
           IF WS-DATA NOT = SPACES
               IF WS-FLAG NOT = 'E'
                   PERFORM MAIN-PROCESS
               END-IF
           END-IF

      *=== CONTINUEで整理した版(OK例) ===
           EVALUATE TRUE
               WHEN WS-DATA = SPACES
                   CONTINUE   *> データなし: スキップ
               WHEN WS-FLAG = 'E'
                   CONTINUE   *> エラー済み: スキップ
               WHEN OTHER
                   PERFORM MAIN-PROCESS
           END-EVALUATE

      *=== ガード節パターン(EXIT SECTIONと組み合わせ)===
       PROCESS-SECTION SECTION.
           IF WS-DATA = SPACES
               EXIT SECTION       *> データなし: セクション抜け
           END-IF
           IF WS-FLAG = 'E'
               EXIT SECTION       *> エラー済み: セクション抜け
           END-IF
           PERFORM MAIN-PROCESS.
       PROCESS-END. EXIT.

PERFORM文でのCONTINUE活用

インラインPERFORMのループ本体をCONTINUEにする

ループの条件評価だけが目的で、ループ本体は何もしなくてよいケースがまれにあります(ポーリング待機など)。

ループ本体をCONTINUEにするパターン
      *--- ポーリング: フラグが立つまで待つだけ(ループ本体は空)---
      *    ※実務ではCOBOLでビジーウェイトは避けるべき。例示目的
           PERFORM UNTIL WS-READY-FLAG = 'Y'
               CONTINUE    *> フラグが立つのを待つだけ(外部から変更される想定)
           END-PERFORM

      *--- PERFORM TIMES でCONTINUE: 件数のカウントのみ ---
      *    ※これも実用性は低いが、文法上有効
           PERFORM 5 TIMES
               CONTINUE
           END-PERFORM

      *--- 実用的な例: SEARCH文でCONTINUEを使う ---
           SEARCH WS-TABLE-ITEM
               AT END
                   MOVE 'N' TO WS-FOUND-FLAG
               WHEN WS-TABLE-KEY(WS-TABLE-IDX) = WS-SEARCH-KEY
                   CONTINUE   *> 見つかった: インデックスはそのままでSEARCH終了
           END-SEARCH

「何もしない」が設計上有効な場面

CONTINUEを使う場面を意識的に整理すると、コードの意図が設計レベルで明確になります。

場面 説明
許容エラーの明示的スキップ ファイルSTATUSコードのうち「許容できるエラー」(例: 重複キーを無視)をCONTINUEで明示的にスキップする WHEN ’22’ CONTINUE (重複キーは無視)
将来実装のプレースホルダー 設計段階でWHEN句を先に定義し、実装は後回しにするときのマーカー WHEN 3 CONTINUE *> TODO
デフォルト動作の明示 WHEN OTHERで「それ以外は何もしない」を省略せず書くことで意図が伝わる WHEN OTHER CONTINUE
条件の肯定表現への変換 NOT条件より「正常はCONTINUE、異常だけELSE処理」と書くほうが読みやすい IF 正常条件 CONTINUE ELSE エラー処理 END-IF
空のテスト用スタブ 単体テストやフェーズ開発でサブプログラム・段落をまず空実装する PROCEDURE DIVISION. CONTINUE. GOBACK.

実践パターン

ファイルSTATUSの許容エラーをCONTINUEで処理する

COBOLのファイル操作ではFILE STATUSコードが返ります。エラーコードの中には「許容できるもの」と「致命的なもの」があります。許容できるエラーをCONTINUEで明示的にスキップするパターンは実務で頻繁に使います。

ファイルSTATUSの許容エラー処理
       WORKING-STORAGE SECTION.
       01 WS-FILE-STATUS   PIC X(2).
          *> ファイルSTATUSコード(主要なもの)
          *> '00': 正常
          *> '02': 重複キー(ALTERNATE KEY)
          *> '10': ファイル終端(EOF)
          *> '22': 重複主キー(WRITE/REWRITE時)
          *> '23': レコードなし(READ/DELETE時)
          *> '35': ファイルが存在しない(OPEN時)
          *> '48': WRITE中のエラー

       PROCEDURE DIVISION.
      *--- ファイルオープン後のステータスチェック ---
           OPEN INPUT MASTER-FILE
           EVALUATE WS-FILE-STATUS
               WHEN '00'
                   CONTINUE        *> 正常: 何もしない

               WHEN '35'
                   *> ファイル未存在: 初回実行時は許容する
                   DISPLAY '警告: マスタファイルが存在しません'
                   DISPLAY '      新規作成します'
                   PERFORM CREATE-NEW-MASTER
                   CONTINUE        *> 以降の処理は続行

               WHEN OTHER
                   DISPLAY 'ERROR: ファイルOPENエラー STATUS='
                           WS-FILE-STATUS
                   MOVE 8 TO RETURN-CODE
                   GOBACK
           END-EVALUATE

      *--- REWRITEでの重複キーチェック ---
           REWRITE MASTER-REC FROM WS-UPDATE-REC
           EVALUATE WS-FILE-STATUS
               WHEN '00'
                   CONTINUE        *> 正常: 更新成功
               WHEN '22'
                   CONTINUE        *> 重複ALT KEY: 許容(既知の仕様)
               WHEN '23'
                   DISPLAY 'WARN: 対象レコード未存在 KEY=' WS-KEY
                   ADD 1 TO WS-SKIP-COUNT
                   CONTINUE        *> スキップして次へ
               WHEN OTHER
                   DISPLAY 'ERROR: REWRITE失敗 STATUS='
                           WS-FILE-STATUS
                   MOVE 8 TO RETURN-CODE
                   GOBACK
           END-EVALUATE

レコードフィルタリング(対象外レコードをスキップ)

入力ファイルの中から処理対象のレコードだけを選択的に処理します。対象外レコードをCONTINUEで明示的にスキップする設計です。

EVALUATE TRUEでのレコードフィルタリング
       WORKING-STORAGE SECTION.
       01 WS-INPUT-REC.
          05 WS-REC-TYPE    PIC X(2).
             88 REC-HEADER  VALUE 'HD'.
             88 REC-DETAIL  VALUE 'DT'.
             88 REC-TRAILER VALUE 'TR'.
          05 WS-DELETE-FLAG PIC X(1).
             88 IS-DELETED  VALUE 'D'.
          05 WS-DEPT-CODE   PIC X(4).
          05 WS-AMOUNT      PIC S9(9)V99 COMP-3.
             88 AMT-ZERO    VALUE ZERO.

       01 WS-TARGET-DEPT    PIC X(4) VALUE 'A001'.

       PROCEDURE DIVISION.
           PERFORM PRIMING-READ
           PERFORM UNTIL WS-EOF
               PERFORM FILTER-AND-PROCESS
               PERFORM READ-NEXT
           END-PERFORM
           STOP RUN.

       FILTER-AND-PROCESS.
           EVALUATE TRUE
               WHEN REC-HEADER
                   CONTINUE    *> ヘッダレコード: 処理不要

               WHEN REC-TRAILER
                   CONTINUE    *> トレーラレコード: 処理不要

               WHEN IS-DELETED
                   ADD 1 TO WS-SKIP-CNT
                   CONTINUE    *> 削除フラグあり: スキップ

               WHEN AMT-ZERO
                   CONTINUE    *> 金額ゼロ: 集計対象外

               WHEN WS-DEPT-CODE NOT = WS-TARGET-DEPT
                   CONTINUE    *> 対象部門以外: スキップ

               WHEN OTHER
               *> すべてのフィルタを通過した明細レコードを処理
                   PERFORM PROCESS-DETAIL-RECORD
           END-EVALUATE.

状態マシンでの「遷移なし」をCONTINUEで表現する

バッチ処理の状態管理(ステートマシン)において、特定の状態+イベントの組み合わせで「状態は変わらない(何もしない)」ケースをCONTINUEで明示します。

状態マシンでのCONTINUE活用
*  注文処理の状態マシン
*  状態: INIT(初期)→ APPROVED(承認済)→ SHIPPED(出荷済)→ DONE(完了)
*  イベント: APPROVE(承認)/ SHIP(出荷)/ COMPLETE(完了)/ CANCEL(取消)

       WORKING-STORAGE SECTION.
       01 WS-ORDER-STATUS  PIC X(8).
          88 STATUS-INIT    VALUE 'INIT    '.
          88 STATUS-APPRVD  VALUE 'APPROVED'.
          88 STATUS-SHIPPED VALUE 'SHIPPED '.
          88 STATUS-DONE    VALUE 'DONE    '.
          88 STATUS-CANCEL  VALUE 'CANCEL  '.

       01 WS-EVENT         PIC X(8).

       PROCEDURE DIVISION.
           EVALUATE TRUE ALSO TRUE
               WHEN STATUS-INIT    ALSO WS-EVENT = 'APPROVE '
                   MOVE 'APPROVED' TO WS-ORDER-STATUS
                   PERFORM SEND-APPROVAL-MAIL

               WHEN STATUS-APPRVD  ALSO WS-EVENT = 'SHIP    '
                   MOVE 'SHIPPED ' TO WS-ORDER-STATUS
                   PERFORM UPDATE-INVENTORY

               WHEN STATUS-SHIPPED ALSO WS-EVENT = 'COMPLETE'
                   MOVE 'DONE    ' TO WS-ORDER-STATUS
                   PERFORM CLOSE-ORDER

               WHEN STATUS-DONE    ALSO ANY
                   CONTINUE    *> 完了済みはいかなるイベントも無視

               WHEN STATUS-CANCEL  ALSO ANY
                   CONTINUE    *> キャンセル済みはいかなるイベントも無視

               WHEN ANY            ALSO WS-EVENT = 'CANCEL  '
                   MOVE 'CANCEL  ' TO WS-ORDER-STATUS
                   PERFORM CANCEL-PROCESS

               WHEN OTHER
                   DISPLAY 'WARN: 無効な状態遷移 STATUS='
                           WS-ORDER-STATUS ' EVENT=' WS-EVENT
                   CONTINUE    *> 不正遷移は警告のみで継続
           END-EVALUATE

空スタブとしてのCONTINUE(テスト開発フロー)

トップダウン設計でメイン処理を先に実装し、サブプログラムや段落を後から実装するときにCONTINUEで空実装を作っておくパターンです。

テスト用空スタブの実装
      *=== メイン処理(先に実装)===
       PROCEDURE DIVISION.
       MAIN-LOGIC.
           PERFORM INIT-PROCESS
           PERFORM LOAD-MASTER
           PERFORM MAIN-BATCH
           PERFORM OUTPUT-REPORT
           PERFORM CLOSE-PROCESS
           STOP RUN.

      *=== フェーズ1: 実装済み ===
       INIT-PROCESS.
           OPEN INPUT  TRANSACTION-FILE
           OPEN OUTPUT RESULT-FILE.

      *=== フェーズ2以降: CONTINUEで空スタブ ===
      * TODO 2026-05: マスタファイルの読み込み実装
       LOAD-MASTER.
           CONTINUE.

      * TODO 2026-05: メインバッチ処理実装
       MAIN-BATCH.
           CONTINUE.

      * TODO 2026-06: 帳票出力実装(別チーム担当)
       OUTPUT-REPORT.
           CONTINUE.

       CLOSE-PROCESS.
           CLOSE TRANSACTION-FILE
           CLOSE RESULT-FILE.

よくある落とし穴と対策

NEXT SENTENCEをCONTINUEと同じと思って使う

最も危険な誤りです。NEXT SENTENCEは「次のピリオドまでの処理をすべてスキップ」するため、IF・EVALUATEのブロック内で使うと想定外の処理省略が起きます。

対策: NEXT SENTENCEは使わずCONTINUEに統一します。旧コードをメンテナンスする際もNEXT SENTENCEを発見したらCONTINUEに置き換え、動作確認を行います。

WHEN OTHER を省略して「意図不明」なコードになる

WHEN OTHERを省略すると「他の条件は考慮していない」のか「考慮したが処理不要」なのかが読み手に伝わりません。チームメンバーが後で処理を追加する際、誤った場所に追記するリスクがあります。

対策: EVALUATE文では原則としてWHEN OTHERを書きます。処理が不要な場合もCONTINUEを置いて「意図的に何もしない」ことを明示します。

CONTINUEをプレースホルダーのまま本番に出す

「TODO」コメント付きのCONTINUEをプレースホルダーとして書いたまま本番デプロイしてしまうと、本来必要だった処理が実行されないバグになります。

対策: プレースホルダーのCONTINUEには必ず「TODO: 実装日・担当者・チケット番号」をコメントで付けます。本番デプロイ前にTODOコメントの検索を行うチェックを入れます。

IF 条件 CONTINUE の条件を逆に書く

IF 正常条件 CONTINUE ELSE エラー処理という書き方で、正常・異常の条件を逆に書いてしまうとすべて逆動作になります。CONTINUEが入ることで条件の見直しが疎かになりがちです。

対策: CONTINUEを使ったIF文は「CONTINUEが何もしない=正常ケース」であることをコメントで補足します。レビュー時に特に確認する箇所としてマークしておくと安全です。

PERFORM…UNTIL の本体がCONTINUEのビジーウェイトを作る

PERFORM UNTIL 条件 CONTINUE END-PERFORMでループ本体が何もしないと、条件が変化しない場合に無限ループ(CPU100%のビジーウェイト)になります。

CONTINUEのみのPERFORMループは無限ループのリスクがある
ループ本体がCONTINUEだけの場合、UNTIL条件が外部から変化しないと無限ループになります。バッチ処理でCPUを専有し、ジョブ全体を詰まらせる原因になります。ポーリングが必要な場合はSYSTEM SLEEPや適切な待機機構を使い、CONTINUEのみのループは避けます。

よくある質問

QWHEN OTHERを省略した場合とWHEN OTHER CONTINUEは動作が同じですか?
Aはい、動作は完全に同じです。WHEN OTHERが省略された場合もCONTINUEが書かれた場合も、いずれの条件にもマッチしないときは何も実行せずEND-EVALUATEの後へ進みます。違いは「意図の明示」のみです。WHEN OTHER CONTINUEと書くことで「その他の条件を考慮した上で、意図的に何もしない」という設計意図が読み手に伝わります。
QCONTINUE文はIF文のELSEブランチでも使えますか?
Aはい、使えます。IF 条件 THEN 処理 ELSE CONTINUE END-IFと書けます。ただしELSEブランチのCONTINUEは「ELSEが省略された場合と動作が同じ」ため、ELSE CONTINUEを書く実用的な理由はほとんどありません。CONTINUEはTHENブランチ(IF 正常条件 THEN CONTINUE ELSE エラー処理)で使うパターンの方が有用です。
QCONTINUE文はどこにでも書けますか?
Aはい、COBOLの文が書ける場所であればどこにでも書けます。PROCEDURE DIVISIONの段落の中ならどの位置でも使用できます。ただし実用上意味があるのは、IF/EVALUATE/SEARCH/PERFORMのブランチが空になる場合、またはスタブとして段落全体をCONTINUEで埋める場合です。
Q古いCOBOLコードにNEXT SENTENCEが多く使われています。すべてCONTINUEに変えて大丈夫ですか?
A注意が必要です。NEXT SENTENCEとCONTINUEは動作が異なるため、単純な置き換えは危険です。NEXT SENTENCEは「次のピリオドまでスキップ」するため、置き換えると動作が変わるケースがあります。変換前にNEXT SENTENCEの位置と次のピリオドの位置を確認し、「ピリオドまでの処理をスキップする意図があったかどうか」を元の設計者に確認してから変更します。テスト環境で動作確認を徹底した上で変換しましょう。
QCONTINUEとNOP(No Operation)は同じ概念ですか?
Aはい、概念的には同じです。CONTINUEはCOBOLにおけるNOP(No-operation命令)です。アセンブラのNOP命令やPythonのpass文と同じ役割を持ちます。コンパイル後のオブジェクトコードにはCONTINUEは含まれず(最適化で除去)、実行速度やメモリへの影響はありません。

まとめ

CONTINUE文の使いどころと設計上の意味を整理します。

パターン ポイント
WHEN OTHER CONTINUE EVALUATE文の他の条件を意図的に無視する設計意図を明示する
特定のWHEN + CONTINUE 選択的スキップ。「この条件は意図的に処理しない」を宣言する
IF 正常条件 CONTINUE ELSE 処理 否定条件を避けて可読性を上げる。肯定条件で正常系を表現
プレースホルダー CONTINUE まだ実装されていない処理の仮実装。TODOコメントとセットで
空スタブ段落 トップダウン開発でサブプログラムをまず空実装する
NEXT SENTENCEとの違い CONTINUE=次の文へ / NEXT SENTENCE=次のピリオドまでスキップ(危険・非推奨)

CONTINUE文は「何もしない」だけの単純な命令ですが、意図を明示する道具として使うことでコードの可読性と保守性が大きく向上します。EVALUATE文の全構文(THRU・ALSO・EVALUATE TRUE)についてはEVALUATE文完全ガイドを、IF文の条件表現についてはIF文完全ガイドもあわせてご覧ください。