🧩今日の学び
・COBOLの掛け算はMULTIPLY A BY B.と書き、意味としては「B = B × A」のように結果を書き込む先を意識する
・なるおが引っかかったように、ADDやSUBTRACTと同じく、MULTIPLYでも「どの箱を更新するか」が重要になる
・コードが動かないときは命令そのものだけでなく、ピリオド忘れのような基本的な書式ミスも原因になる
係長)できていれば、今はよしとして、次、掛け算いくぞ。
なるお)こぼるんもやる気マックスですよ!
係)……そういうのいいから…。
な)Bring it on! 言ってますよ!
係)何言いたいんだよ?
な)どんと来い!って。
係)あっそ…。
な)B・I・O!
係)何なんだよ、もう!
な)オーガニック商品のことだって。
係)お前が言ってるだけだろ!いいんだよ、お前の小芝居は!ったく。
足し算はこうだったな。
ADD A TO B.
引き算はこうだった。
SUBTRACT A FROM B.
掛け算はこうなるぞ。
MULTIPLY A BY B.
な)おー、今度はBYっすか。BYEで、さようならもいいですね。
係)(ジロリ)
な)そ、そして、Welcome Homeで歓迎と…
係)お前の英語はなんかイラッとするな。
な)ひど!トリリンガル風を気取ってる俺に向かってなんてことを!
係)どこがだよ!
MULTIPLY A BY B の意味は「B = B × A」
係)いいか、意味はこうだ。
MULTIPLY A BY B. ↓ B = B × A
な)やっぱ更新系なんすね。
係)系ってなんだよ。
COBOLは変わらず、結果を書き込む先が大事だからな。
では、3✕4をやってみろ。
な)またいきなりっすね…まったく、12だっつーの。
係)(イラッ)
だったら12になるまで声かけんなよ。いいな、帰るなよ。
な)えー!労働者には権利というものが存在するのであって、10時におやつを嗜む権利、11時にブランチを嗜む権利、12時にランチを嗜む権利、15時におやつを嗜む権利、16時に帰る用意をする権利、16時45分にディナーのお店に佇んでいる権利が保証されているんですよ!
係)休んでばっかじゃねーか!おやつ2回食ってんじゃねーよ!いいからやれっての!ったく。
な)むー。
(アルフォート買ってきてから言えっつーの!)
んじゃ、まずいつものあれでしょ、儀式でしょー。何かの血とかカラスの死骸とか、ムカデ用意すればいいんでしょ。
こぼるんもいっつも同じの読まされて大変だね、ほんと。
こぼるんだって、たまにはフランス語で、ヴィシソワーズとか読んで、暑い夏に冷たいスープで優雅な気分になりたいっての。
3×4 をコードにするとこうなる
IDENTIFICATION DIVISION. PROGRAM-ID KAKE-TEST. DATA DIVISION. WORKING-STORAGE SECTION 01 A PIC 9(3) VALUE 3. 01 B PIC 9(3) VALUE 4.
って、ここはいいとして、MULTIPLAY A BY Bとかダミ声で言ってたわね。酒ヤケしてんじゃないのあの人。
PROCEDURE DIVISION
MULTIPLY A BY B.
DISPLAY A BT B.
STOP RUN.
って感じかいな。
んじゃ合体させてと。
IDENTIFICATION DIVISION.
PROGRAM-ID KAKE-TEST. ←
DATA DIVISION.
WORKING-STORAGE SECTION ←
01 A PIC 9(3) VALUE 3.
01 B PIC 9(3) VALUE 4.
PROCEDURE DIVISION ←
MULTIPLY A BY B.
DISPLAY B.
STOP RUN.
ターミナルさんいらっしゃーい。
んでコンパイルして、実行っと……
むー? あ…! カタカタタン!
むむー?? ああ! カタカタタン!
むむむー??? あはーん! カタカタタン!
きたー!!
012
できましたよ係長!!キャフー!!
動かない原因は「ピリオド忘れ」
係)うるさいな…
なに、むーむー唸ってたんだよ…
な)なんかピリオド忘れて、うごかなかったんすもん。(コード内矢印の箇所)
係)そらそうだろうな。お前は迂闊なんだよ。
で、最終的にどんなコードになったんだ?
な)こちらでございます。
IDENTIFICATION DIVISION.
PROGRAM-ID. KAKE-TEST.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9(3) VALUE 3.
01 B PIC 9(3) VALUE 4.
PROCEDURE DIVISION.
MULTIPLY A BY B.
DISPLAY B.
STOP RUN.
係)まぁいいんじゃねーか。
おむすび
係)ピリオド忘れるのはよくあるが、お前はさすがに忘れ過ぎだからな。文末にピリオドを打つかどうきちんと考えながら進めろよ。
な)ピリオドが必要なことぐらい教えてくれてもいいのに…こぼるん、ほんとイケズですよね。もうご飯奢ってあげないんだからね!
係)どういう関係性なんだよ…
な)勉強教えてくれる代わりに、女の子を紹介するシステム?
係)犯罪臭しかしないからな…
な)え!?
係長のワンポイント
MULTIPLYは数式じゃなく、どの箱を書き換えるかを決める命令だ。MULTIPLY A BY BはB = B × Aで、結果はBに入る。
だからDISPLAYする箱を間違えると、計算は合っていても答えを見失う。
そしてCOBOLは、ピリオド1個の抜けでも平然と止まる。
計算の向きと文の終わり──この2つが揃って初めて動く。


コメント