【COBOL 書き1-5】掛け算やってピリオド忘れて時間泥棒

🧩今日の学び
・COBOLの掛け算はMULTIPLY A BY B.と書き、意味としては「B = B × A」のように結果を書き込む先を意識する
・なるおが引っかかったように、ADDSUBTRACTと同じく、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 をコードにするとこうなる

📝 COBOL kaketest.cob
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とかダミ声で言ってたわね。酒ヤケしてんじゃないのあの人。

📝 COBOL kaketest.cob
PROCEDURE DIVISION
    MULTIPLY A BY B.
    DISPLAY A BT B.
    STOP RUN.

って感じかいな。

んじゃ合体させてと。

📝 COBOL kaketest.cob
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

できましたよ係長!!キャフー!!

動かない原因は「ピリオド忘れ」

係)うるさいな…

なに、むーむー唸ってたんだよ…

な)なんかピリオド忘れて、うごかなかったんすもん。(コード内矢印の箇所)

係)そらそうだろうな。お前は迂闊なんだよ。

で、最終的にどんなコードになったんだ?

な)こちらでございます。

📝 COBOL kaketest.cob
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 BB = B × Aで、結果はBに入る。
だからDISPLAYする箱を間違えると、計算は合っていても答えを見失う。
そしてCOBOLは、ピリオド1個の抜けでも平然と止まる。
計算の向きと文の終わり──この2つが揃って初めて動く。

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

この記事を書いた人

コメント

コメントする

CAPTCHA