【COBOL 読み3-2-2】GO TO が「悪」になった本当の理由(補足)〜おじさんポエム

🧩今日の学び
GO TOは処理を終わらせる命令ではなく、「終点を持たないジャンプ」そのものだ
STOP RUNEXITは“どこまで終わるか”を定義するが、GO TOはそれを読者に押し付ける
GO TOが嫌われた理由は乱用ではなく、「構造をコードに書けなかった時代の限界」にある

係長)前回、GO TOの話をしたな。

なるお)意味はわかったとは思いますけど…

係)まぁそんなもんだろう。少し整理していくぞ。

GO TO は「終わらせる命令」ではない

係)まず、ここをはっきりさせておく。

GO TOは処理を終わらせる命令ではない。

ただ「別の場所へ行く」だけの命令だ。

STOP RUN:すべてを終わらせる

EXIT:決められた範囲を終わらせる

GO TO:終点を持たない

係)ここが決定的な違いだ。

GO TOは「どこまで終わるか」を考えない。

だから、読む側が考えさせられる。

な)考える…感じるじゃだめっすかね。

おれ感覚派なんで、スピリチュアル派なんで、電車でいつもショート動画見てるんで。

係)それ感覚派じゃねーだろ。ショート動画見てるだけだろ。

な)でも、世界の理がわかってくるんですよ!

係)世界の理よりもCOBOLの理を学べよ。

それでも GO TO が使われ続けた理由

係)いいか。

GO TOは“無意味”だったわけじゃない。

特に昔は、

例外構文がない

エラー処理の仕組みがない

そんな時代だった。

だから、GO TO ERROR-HANDLERのように、異常時だけ処理を一箇所に集める使い方が生まれた。

これは「逃げ」じゃなくて、苦肉の整理だ。

ただし条件がある。

通常フローでは使わない

一本道に集約されている

これを外れた瞬間、地獄になる。

な)また地獄ですか…。

もう地獄だらけでありがたみがないですよ。ここまで来ると。

係)なんでありがたいんだよ!

EXIT PARAGRAPH も万能ではない

係)じゃあGO TOの代わりにEXIT PARAGRAPHを使えばいいのか?

答えは NO だ。

EXIT PARAGRAPHは確かに「戻れる」。

だが「どこへ戻るかは、文脈を読まないとわからない。

・呼び出し元はどこか

・今どの流れにいるのか

これが見えないと、やはり地図が必要なコードになる。

GO TOが「行き先不明」なら、EXIT PARAGRAPHは「帰り道が曖昧」だ。

な)それ、迷子以前の問題じゃないすか。道に迷う人そのまんまじゃないすか。

「地図が読めない女、立って小便しちゃう男」じゃないすか。

係)くだらん。

な)は!?

係)ここまででわかるはずだ。

・GO TO:終点がない

・EXIT PARAGRAPH:帰り道が曖昧

どちらも“構造の途中”で止まっている。

だからCOBOLは次へ進んだってわけだ。

EXIT PERFORM でループだけ終わる、とか、”GOBACK で呼び出し元に戻る”といった“出口を明示する構造”にシフトしていったんだ。

つまり「どこで終わるか」をコードに書くためということだ。

それがEXIT PERFORM

これが正しい出口の形なのだよ。

おむすび

な)えっと、ポエムですか?

係)は?

な)だって「なのだよ」って締めて…そんなこと言ったこと無いじゃないすか?

係)う、うるっさいな!

な)なんかおじさんポエムってこんな感じなのかなーって。

係)そこじゃないからな!大切なところはそんなところじゃないからな!

係長のワンポイント

GO TOは「終わらせず、ただ別の場所へ行く」だけの命令だ。
STOP RUNは全終了、EXITは範囲終了──GO TOだけが終点を持たない。
だから読む側が「ここはどこで終わるのか」を常に考えさせられる。
昔は例外処理がなく、一本道の退避先として“仕方なく”使われていた。
GO TOが悪なのではない──終点を書かない思想が、時代遅れになっただけだ。

― 目次(読みシリーズ)へ戻る ―

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

この記事を書いた人

コメント

コメントする