【COBOL 読み2-10-1】MODで割って余っちゃう?〜責任転嫁の軌跡

🧩今日の学び
MODは割り算の「余り」を返し、偶数・奇数判定を直感的に書ける演算子
PERFORM VARYINGIFを組み合わせることで「回しながら判断する」一覧処理の基本形が見える
DISPLAYは文字列と変数を並べるだけで連結されるため、空白は自分で設計する必要がある

なるお)さーて、次いっちゃいます?一本いっちゃいます?

係長)お前そのテンション、完全に飲み会前だな。

な)いやー、COBOLはおつまみですからねー。

でも、なんでお通しはラーメンじゃないんすかね?

係)なんで最初にラーメン食わなきゃならねーんだよ。ラーメンすすってたら誰も喋らねーだろうよ。

な)オツですね。

係)は?なにが…?

PERFORM VARYING × IF:回しながら判断する基本パターン

って…ゴホン——次のテーマ

PERFORM VARYING × IF」:条件付きループ

       PERFORM VARYING CNT FROM 1 BY 1 UNTIL CNT > 10
           IF CNT MOD 2 = 0
               DISPLAY "CNT=" CNT " → Even number"
           ELSE
               DISPLAY "CNT=" CNT " → Odd number"
           END-IF
       END-PERFORM
       DISPLAY "Finished loop."

な)MOD?うーん、どうでもいいか。

CNTからごとに10を超えるまでルーピング
IFがあって分岐だぜー。
CNTMODで2が0だぜー。
DISPLAY "CNT=" CNT " → Even number"だぜー

はお?、なんすかこれ。?
全然わかりませんよ!

絶対嘘でしょこれ?

係)嘘じゃねぇよ。

な)嘘じゃないってのが嘘なんすね!

係)違うわ!

な)そうか!違うってのが嘘なので、違わない?
あれ、嘘じゃないってのは嘘じゃない?

そっか係長は正しかったんですね。

係)お、おう…

MODの正体:割って余ったら責任は誰のもの?

いいか、MODは英語の “modulo(モジュロ)” の略だ。

つまり——

割り算したときの「余り(あまり)」を出す演算子だ。

な)あまり?

おつり231円でーすとか言って、手と手が触れるあれですか?

ものすごい拒否反応される女の子ですか?

そんなに嫌がることないのにねぇ…

俺は、ミミズなんすかね…。でも魚は食べてくれますよ?自ら口の中に入れようとしてくれるんですよ?

係)どんなテンションなんだよ。

つまりは、

IF CNT MOD 2 = 0

は、こう読める。

CNT2で割ってあまりが0なら、つまり偶数

な)あ、そっか、CNT2 で割ったとき、偶数だとあまりは 0 なると。
んで、偶数でなかったら、奇数だから、ELSEにとんで…

は、いいとして、次なんすかこれ?

DISPLAY "CNT=" CNT " → Even number"

絶対係長俺のこと嫌いでしょ!?

係)落ち着けよ。好きなわけ無いだろ。

な)へ!?

DISPLAYは並べるだけ:COBOLが文章っぽい理由

係)COBOLのDISPLAYはな、

文字列と変数をカンタンに並べて表示できる。

な)並べて表示?

係)そう。

COBOLでは “文字” 変数 “文字” って書くと、勝手にくっつけて出力してくれる。

「連結」って言葉すらいらん。

だからこれは、

DISPLAY "CNT=" CNT " → Even number"

実際にはこう出る。

CNT=2 → Even number

な)え……自動で間がくっつくんすか!?愛もなしに!?

係)そうだが、そこがCOBOLらしいトラップなんだ。

自動で空白が入るわけじゃない

必要なら “CNT= ” みたいに自分でスペースを入れる。

な)おおー……なるほど!

COBOLの文字列結合は“並べるだけでOK”ってことっすね。

たしかに、文章っぽいですもんね。

係)そう。COBOLの美学は「人間が読める」こと。

“コンピュータに伝える”より、“人間に説明する”ほうが大事なんだ。

な)……あれ?

じゃあDISPLAY "CNT=" CNTの部分で、

CNTがたとえば5なら——

CNT=5 → Odd number"

ということっすよね。

PERFORMCNT1から10まで増える中で、IFで「偶数か奇数か」を分けて出してるってことっすよね。

係)でも、これができると“ループの中で条件分岐をする”パターンが理解できる。

つまり、「回す × 判断する」が同時にできるってわけだ。

な)あー、つまり「一覧処理」の基本ですね。

例えば、売上データ全部読んで、1000円以上のやつだけ表示とかっすね。

おむすび

係)おお、いいじゃねえか。

その感覚があればもうCOBOLで帳票ぐらい作れる。

な)え?マジっすか!?

だったら、うちの会社の給料計算とかさせちゃったりして!

係)やめとけ。間違って全員100万円とか配りかねない。

な)そっちのほうがみんな喜ぶでしょ?

係)俺はいいぞ。クビになるのはお前だけだしな。

な)え!?そこは一蓮托生、共同責任、責任転嫁でしょ!?

係)転嫁するんじゃねー!

係長のワンポイント

MODは「割り算の余り」を返す演算子で、偶数・奇数判定の定番だ。
CNT MOD 2 = 0は「2で割り切れる=偶数」という、人間にも直感的な条件になる。
PERFORM VARYING で回しながらIFで分岐するのが、一覧処理の基本形。
DISPLAY は文字と変数を“並べた順にそのまま出す”だけで、気は利かない。
回す・判定する・表示する──この3点セットが分かれば帳票COBOLの入口だ。

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

この記事を書いた人

コメント

コメントする