【COBOL 読み3-8-1】CONTINUEは無言で語る中二病

🧩今日の学び
CONTINUEは「何もしない処理」ではなく「何もしないと明示する設計判断」
・係長の言う通り、制御を動かさないからこそコードの意図が静かに伝わる
・空行ではなく命令として残すことで、未来の保守者に優しいCOBOLになる

係長)さて、次はCONTINUEだ。

なるお)CONTINUEだから、続けるとか?

係)まぁそう思うだろうな。CONTINUEは派手さゼロ、でも読めるCOBOLを作る最後の覇者みたいな存在だ。

な)最後の覇者?なんすかそれ?

係)い、いや、そういうような意味合いかなって…

な)だからなんなんす?

係)だから、なんとなくだよ、なんとなく!

な)ほー、係長は中二病だと…メモメモ

係)だからなんでメモるんだよ!

CONTINUEの正体:「何もしない」という明確な意思表示

係)いいか!

CONTINUE =「何もしない」

以上だ!

な)説明になってないっすよ!
なんすかその投げやり感!俺はいつもマジメに考えてるんですよ!

昼飯を一蘭にするか一風堂にするか思い悩んでいるってのに!両方行くに決めましたけど。

あ、ちょっと帰って来るの遅くなるので、そこはおちゃめってことで。

係)何がおちゃめだよ!どっちかで、替え玉続けてろよ!

いいんだって!そんなことは!

CONTINUEは別になにもするわけではなく、構文上「何か書け」と言われた場所に「何もする気はない」と意思表示するためのもんだ。

な)はぁ?

何いってんすか?酔っ払ってんすか?なにか書けって言われたから、はい書きましたーって適当に書いてんすか?そうやって大人たちをはぐらかして生きてきたんすね…。

係)だれが酔っ払ってんだよ!黙ってきいてろ!

いいか、まず一番よくある例として

IF STATUS = "OK"
    CONTINUE
ELSE
    DISPLAY "エラー"
END-IF
実行結果
 ・STATUS = “OK”
  → 何も起きない(次の行へ進む)
 ・STATUS ≠ “OK”
  → 「エラー」表示

なぜ書くのか:読む人に意図を伝えるため

な)え?IFいらなくないっすか?CONTINUEとか書いて、仕事した気になってるだけじゃないすか!仕事してますアピール派だったんですね。失望です。

係)お前、最近妄想で俺に失望してねーか。

いいか、お前の考え方は「人間が読む」ことを忘れてる。

まずはCONTINUEを使うと意図が見えるということだ。

IF STATUS = "OK"
    CONTINUE
ELSE
    DISPLAY "エラー"
END-IF

これを見るだけで、「OK のときは、あえて何もしない設計」というのが一瞬で分かるだろ。

な)ほーほー。

でもOKのときは「にっこり」とかでもいいのでは。

係)なんでだよ⋯

な)ほっこりしますよね?

係)仕事でほっこりする必要がねーだろ。

な)だから怒鳴る文化がはびこるんですよ!この世に悪がはびこるんですよ!だからスーパー戦隊シリーズが終わっちゃうんですよ!悪に負けちゃったんですよ!

係)しらねーよ!

…はぁ、2つ目は後で処理を足せるってことだ。

IF STATUS = "OK"
    CONTINUE
ELSE
    DISPLAY "エラー"
END-IF

⬇ 数年後とかに

IF STATUS = "OK"
    PERFORM LOG-OK
ELSE
    DISPLAY "エラー"
END-IF

という形で構造を壊さず育てられる

EXITやCYCLEと何が違うのか:制御を動かさない唯一の命令

係)EXIT / GO TO / NEXT SENTENCEとの違いをまとめるとこうなる。

命令何をする?
CONTINUE何もしない(そのまま下に流れる)
EXIT構造を抜ける
GO TOどこかへ飛ぶ
NEXT SENTENCE次のピリオドへ飛ぶ

CONTINUEは制御を動かさない唯一の存在なんだ。空気のように、ただ通過するだけだ。

そしてPERFORMと組み合わせるときはこういう形になる。

だから、PERFORM と組み合わせるときは注意が必要だぞ。

PERFORM VARYING I FROM 1 BY 1 UNTIL I > CNT
    IF STATUS(I) = "SKIP"
        CONTINUE
    ELSE
        DISPLAY "処理:" I
    END-IF
END-PERFORM

実行結果

STATUS = “SKIP”
 → 何もせず次のループへ
それ以外
 → DISPLAY 実行

EXIT PERFORM CYCLEとの違いはこうだ。

観点CONTINUEEXIT PERFORM CYCLE
意味何もしない今回のループを終了
書く位置IF の中ループ制御命令
明示性控えめ強い

「何もしない」を言いたいならCONTINUE「今回は飛ばす」を強く言いたいならEXIT PERFORM CYCLE

そして、実務上のルールはこうなる。

OK
IFの構造を保ちたいとき
将来処理が増える前提の分岐
読む人に「意図」を伝えたいとき

NG
ただの空行代わり
GO TOの代用品

つまりCONTINUEは「怠慢」ではなく、「今は何もしない」という立派な設計判断だ。

おむすび

な)はー。

なんか、物を言わない、昭和の頑固な男って感じですねー。

係)そうだな。お前とはまったく違って、無駄なこと言わないからな。

な)それを言うなら、係長もじゃないっすか!

係)なんでだよ!

な)えーだって「何もしない。以上だ」とか、ちょっと狙って言ってたでしょ?

係)そういうこと言うのが無駄なんだろうが!

係長のワンポイント

CONTINUEは「何もしない命令」じゃない、何もしないと決めた意思表示だ。
制御を動かさないからこそ、構造と文脈がそのまま残る。
空行と違い、「ここで何も起きない理由」がコードに刻まれる。
後から処理を足せるのは、今をサボっていない証拠でもある。
CONTINUEは静かだが、一番人間に優しい命令だ。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする