🧩今日の学び
・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との違いはこうだ。
| 観点 | CONTINUE | EXIT PERFORM CYCLE |
|---|---|---|
| 意味 | 何もしない | 今回のループを終了 |
| 書く位置 | IF の中 | ループ制御命令 |
| 明示性 | 控えめ | 強い |
「何もしない」を言いたいならCONTINUE、「今回は飛ばす」を強く言いたいならEXIT PERFORM CYCLE。
そして、実務上のルールはこうなる。
OKIFの構造を保ちたいとき
将来処理が増える前提の分岐
読む人に「意図」を伝えたいとき
NG
ただの空行代わりGO TOの代用品
つまりCONTINUEは「怠慢」ではなく、「今は何もしない」という立派な設計判断だ。
おむすび
な)はー。
なんか、物を言わない、昭和の頑固な男って感じですねー。
係)そうだな。お前とはまったく違って、無駄なこと言わないからな。
な)それを言うなら、係長もじゃないっすか!
係)なんでだよ!
な)えーだって「何もしない。以上だ」とか、ちょっと狙って言ってたでしょ?
係)そういうこと言うのが無駄なんだろうが!
係長のワンポイント
CONTINUEは「何もしない命令」じゃない、何もしないと決めた意思表示だ。
制御を動かさないからこそ、構造と文脈がそのまま残る。
空行と違い、「ここで何も起きない理由」がコードに刻まれる。
後から処理を足せるのは、今をサボっていない証拠でもある。CONTINUEは静かだが、一番人間に優しい命令だ。

コメント