【COBOL 書き1-8-9】ピリオドがないから巻き込まれるってどういうこと?〜卑屈人生極まれリ

🧩今日の学び
IF文は次の「1文」だけを対象とし、ピリオドの位置で処理範囲が決まる
・ピリオドが途中にあると文が分断され、意図しない命令が無条件で実行される
・係長の言う通り、COBOLは見た目ではなく「どこまでが1文か」で動くため、ピリオドの位置が設計そのものになる

📝 COBOL sample.cob
DISPLAY "A"
DISPLAY "B"
DISPLAY "C".

なるお)で、なんだってー。実行しろってか。

📝 COBOL dis.cob
IDENTIFICATION DIVISION.
PROGRAM-ID. DIS.

PROCEDURE DIVISION.

DISPLAY "A".
DISPLAY "B".
DISPLAY "C".

DISPLAY "A"
DISPLAY "B"
DISPLAY "C".

STOP RUN.

っていうのでどうさね。

ピリオドがなくても結果は同じに見える

💻 ターミナル出力 実行結果
A
B
C
A
B
C

って、同じ結果じゃん…どういうことっすかこれ?ピリオドついてなければ、巻き込むんだったら、

なるお考え
ABC

という出力になるじゃないですの?

巻き込まれるのは「文字」ではなく「処理のまとまり」

係)別に処理が連続するからといって、ABCとなるわけじゃないぞ。

な)へ?だって「あたいの人生を全て巻き込むって言ったじゃない!」状態だったらABCになるんじゃ?

係)つまりこういうことだ。

💡 ポイント
DISPLAY "A" を実行(Aを出して、改行)
次に DISPLAY "B" を実行(Bを出して、改行)
最後に DISPLAY "C" を実行(Cを出して、改行)

ここでピリオドが来たから、この一連の文(センテンス)は終わり

な)なんで勝手に改行してんのさ!

係)俺に仕様の文句を言うなよ…。

な)ひどい!信じてついてきたのに、すぐに裏切るなんて!あたしにはこの町に知り合いなんていないのよ!どうすればいいの!ォィォィォィォィ

係)オイオイを声に出すやついるんだな。

な)なんで冷静!?

係)つまり、DISPLAYがピリオド無く連続したからといって、文字自体がくっついて ABC になるわけではなく、「処理の順番」が1つのグループとしてくっついているだけだってことだ。

な)えー、だったら、さっきの係長の話は意味ないじゃないすかー。

IFを入れると巻き込みが見える

係)さっきのコードにこういった条件をいれてみろ。

💡 ポイント
IF 1 = 2

な)係長らしい嘘にまみれた条件ですね。

係)嘘なんて言ってねーだろ!!いいからやれ!

な)ほんと横暴⋯

📝 COBOL dis.cob
IDENTIFICATION DIVISION.
PROGRAM-ID. DIS.

PROCEDURE DIVISION.

IF 1 = 2
    DISPLAY "A".
    DISPLAY "B".
    DISPLAY "C".

IF 1 = 2
    DISPLAY "D"
    DISPLAY "E".
    DISPLAY "F".

IF 1 = 2
    DISPLAY "G"
    DISPLAY "H"
    DISPLAY "I".

STOP RUN.
💻 ターミナル出力 実行結果
B
C
F

え、なにこれ??

係)考えてみろ。

な)えー

係)考えろ。

な)むー、なんなのさー。

IFを入れると巻き込みが見える

💡 ポイント
IF 1 = 2
    DISPLAY "A".
    DISPLAY "B".
    DISPLAY "C".

これだと、条件を満たしてないんだから、処理は飛ばされる?

……じゃなくて、最初のAのあとにピリオドがあるから、そこでこのIF終わってるってことじゃないこれ?

ってことはインデントをきちんとするとわかっちゃうんじゃないこれ?

💡 ポイント
IF 1 = 2
    DISPLAY "A".

DISPLAY "B".
DISPLAY "C".

って書くと結果と一緒よね!素敵ね!

で、次。

💡 ポイント
IF 1 = 2
    DISPLAY "D"
    DISPLAY "E".
    DISPLAY "F".

今回も条件が成立してないんだから、処理は飛ばされると思いきや、1つ目にピリオドがついていないから、まだIFは続きまっせーで次へ。Eにピリオドがついているから、条件はここで終わるっと。

そして、改めてF表示が発動!書き方を整えるとこうね!

💡 ポイント
IF 1 = 2
    DISPLAY "D"
    DISPLAY "E".

DISPLAY "F".

んで、最後はっていうと…

💡 ポイント
IF 1 = 2
    DISPLAY "G"
    DISPLAY "H"
    DISPLAY "I".

最後にピリオドあるんだから、そこまでの三者の愛憎が入り乱れて、もう誰も愛されなくなって、表示なし!

どうこれ、係長これ!

係)いや、まぁ言ってることは合ってるんだが、なんで愛憎が入り乱れるんだよ…

おむすび

な)いやもう、入り乱れたのは5者ですけど!女1男4の合コンですけど!勝ち目無いから、1人で飲みまくって食べまくって割り勘で勝ちますけど!

係)しらねーよ!

でも、わかったろ!通常だと、あまり巻き込まれるという意味がわからないと思うが、こうやって条件がつくと巻き込まれていることがよくわかるだろ。

な)あ、そういう話。

係)なんの話だと思ってたんだよ…。

な)いやー奇数だと絶対ハブられ者がいるって話かなと。

係)だから今仕事中だっての。

いいか、ピリオドは“表示をつなぐ”ものじゃない。処理の所属先を切るものだってことだ。

な)そうっすよね。無視されるやつを配置しておかないと取り合いへし合いになっちゃいますしね。

係)なんの話してんだよ!

な)いや、いいんすよ、俺がハブられても。そういう星の下に生まれたことを呪いませんよ。自分は常に不幸が続く運命なんて呪いませんよ。朝の正座占いで11位だってことも気にしませんよ。12位の人には謝るのに、11位の人には謝らないことも気にしませんよ。

係)どういう卑屈理論だよ…

な)でも、飲んで食って、全員の財布に痛手を与えられるから楽しみですよ!

係)結局楽しんでんじゃねーか!

な)だって俺の財布も痛手ですよ?

係)どんだけ食うんだよ!

係長のワンポイント

ピリオドは文字をつなぐ記号じゃない。
処理がどこまで条件に属するかを決める境界線だ。
だから DISPLAY が並んでも、くっつくのは文字ではなく“支配範囲”になる。
IF と組み合わせると、その巻き込みが一番よく見える。
COBOLは見た目じゃなく、ピリオドまでを1文として動く言語だ。

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

この記事を書いた人

コメント

コメントする

CAPTCHA