🧩今日の学び
・COBOLの割り算はDIVIDE A INTO Bで、意味はB = B ÷ Aとして結果を書き込む側が重要になる
・なるおのミスからも分かる通り、ピリオド忘れや誤字などのケアレスミスはプログラムを止める大きな原因になる
・COBOLでは処理の正しさだけでなく「正しく書くこと」も同じくらい重要になる
係長)んで、だれの声が酒ヤケしてるって?
なるお)へ!?
係)俺のどこがダミ声なんだよ!
な)いやまぁなんちゅーか、ほら、ハスキーボイスって良いなって話っすよ!オペラと対極なやつだなって!
係)それ褒めてねーだろ!
な)いやーそれにしても、次は割り算すねー
係)無理やり話を進ませるんじゃねーよ!
な)なんか前にやったような記憶があるんですが…あーデジャブっすね。
つまり、前世の記憶が蘇っているわけっすね。
あれ?ってことは俺COBOL技術者だったんすね!係長より上役だったんすよ!
おい、これやっとけ。
係)あぁん?
な)あ、や、なんでもないっす…
係)前世で上役だったやつが、今世でピリオド忘れて止まってるのか?大したもんだな、おい。
な)現世の話を持ち出さないで…
係)てか、どうせ覚えてないんだろ?
な)勝手に決めつけないで!
係)覚えたのか。
な)いや、そういうことじゃないっす…。
係)なんなんだったんだよ、今のやりとりは!ったく。
DIVIDE A INTO B の意味は「B = B ÷ A」
COBOLで割り算はこう書くぞ。
DIVIDE A INTO B.
な)あーそんなのみた!
係)なんだよ、そんなのって…意味はこうだ。
B = B ÷ A
な)ほー、これもBが更新系だと。
係)だから系ってなんなんだよ。
COBOLは最後まで結果を書き込む側が主役だって話だ。
なら10 ÷ 2をやってみろ。
な)あーい
もう楽勝っすよ。まじで。
いつものやつ書いてーと、そんで変数まで行っちゃいますかー。
IDENTIFICATION DIVISION PROGTAM=ID. WARI-TEST DATA DIVISION. WORKINGSTORAGE SECTION. 01 A PIC 9(3) VALUE・・・・・
んー?
割り算でも「値の入れ方」がすべて
な)2で10を割ってBを更新したいんだから、
A → 2 B → 10
ってことよね。なので進めていきましょう。そうしましょう。
IDENTIFICATION DIVISION PROGTAM=ID. WARI-TEST DATA DIVISION. WORKINGSTORAGE SECTION. 01 A PIC 9(3) VALUE 2. 01 B PIC 9 (3) VALUE 10.
つーわけね。
んでDIVIDE INTOってしゃがれた声で言ってたから〜
係)誰がしゃがれてるって!?
な)ひえ!いや、独り言聞かないでくださいよ…函谷関の壁、勝手に全部破壊しないでくださいよー。
係)うるせーよ。なんでキングダムの話が出てくるんだよ。
な)あ、キングダム見てます!?漫画すか?アニメすか?
係)いーから早くやれっての!!
な)むー。
IDENTIFICATION DIVISION ←
PROGTAM=ID. WARI-TEST ←
DATA DIVISION.
WORKINGSTORAGE SECTION. ←
01 A PIC 9(3) VALUE 2.
01 B PIC 9 (3) VALUE 10.
PROCEDURE DIVISION.
DIVIDE A INTO B.
DISPLAY B.
STOP RUN.
こーでしょー。みてくださいよーあっさり豚骨背脂味噌ですよ!
係)それのどこにあっさり要素があるんだよ…
ケアレスミスは一発アウト
係)って、お前なぁ、またコードがぐちゃぐちゃじゃねーか!
-を=にしたり、-がなかったり、ピリオドもない。PROGTAMってなんだよ!
お前なぁ、毎回同じようなミスして、なんだと思ってんだ?現場でこれやったら一発で障害だぞ。それで損害がでたらシャレになんねーんだよ!笑い事じゃねーんだよ!
な)あ…あ…
係)いい加減シャンとしろや!さっさと直せ!
な)あ、あい…
IDENTIFICATION DIVISION.
PROGRAM-ID. WARI-TEST.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9(3) VALUE 2.
01 B PIC 9(3) VALUE 10.
PROCEDURE DIVISION.
DIVIDE A INTO B.
DISPLAY B.
STOP RUN.
係)たく、お前が浅はかなのは億も承知だが、こんなミスいつまでもしてるんじゃねーぞ。
な)あい…
係)だったら実行!
な)あい…
005
こちらでございます…
おむすび
係)できるんだから…最初からそうやってきちんと書けよ。まったく。
……しっかし、お前今までよく大きなミスなく仕事をやってきたもんだな。
な)えと、幸運の女神に守られてるので…
係)はぁ?どういうことだよ…
な)小学校のときにチャリに乗って道路に飛び出したら、車にはねられて、宙を舞ったんで。
係)それのどこが幸運なんだよ…
な)一緒にいた友達はお前空を飛んでたよって、笑ってて。
係)いや撥ねられたんだろ!?
な)で、無傷でした。
係)は!?いや無傷で良かったんだけど!
係長のワンポイント
DIVIDEは計算じゃない、どの箱を更新するかの命令だ。DIVIDE A INTO BはB = B ÷ Aで、主役は常にBになる。
だからAとBを取り違えると、意味が完全に逆になる。
そして COBOL は、ピリオド1つ・スペル1つのミスでも平然と壊れる。
ケアレスミスはバグじゃない──そのまま事故になる世界だ。


コメント