🧩今日の学び
・COBOLのADDは数学の式ではなく「どの箱を書き換えるか」を指定するデータ更新命令である
・係長の説明どおり、ADD A TO Bは「B = B + A」という意味になる
・COBOLでは計算式よりも「結果をどこに入れるか」を間違えないことが重要になる
なるお)いきなり書けって言われてもですよー。
係長)あんだけ読んだんだから、少しは書けるだろ。
な)いやいや、出会った瞬間ならラブレタ−書けますけど、知らない子にラブレター書けないじゃないすか。
係)あんだけCOBOLのコード読んどいて「知らない子」扱いすんな!
な)いやCOBOLは人じゃないですし⋯
係)お前が「子」って言ったんだろ! ったく、まずは基本の足し算やってみろ。
な)えー、いきなり小学生っすか!俺のレベル疑ってます?
少なくとも小2レベルはありますよ。
係)いいから早く書け!
COBOLの足し算は「数字」じゃなく「箱」で考える
な)むー。 1 + 1 とかでいいんすかね…(カタカタ)
係)……それは「値が決まってる」計算だろ。 業務でやるのはそっちじゃないだろ。
な)ほ?
係) 売上 + 売上 数量 + 数量 金額 + 金額 つまり👉 変数同士の計算だ。
な)あーそういうことっすか。 Excelでいう =A1+A2 みたいなやつっすね。
係)そうだ。それをCOBOLでやるとどうなるって話をしてるんだよ。
な)そうなんすね。最初から言ってくれればいいのに。ほんと意地悪い。好きな娘をいじめるアレっすか。そっすよね、かわいい俺が悪いんすよね⋯。
係)かわいくないから、はよしろって。
な)なんちゅうことを!
あ、そういえば ADD ってありましたよね。それっすか。
係)そうだな。それをどう書くんだって話だ。
な)そゆことね。
ADD って TO で繋いでたから、 ADD 1 TO 1 みたいな形で、足し算すよね!
係)コンパイルエラーだよ!
な)ええ!? なんで!?
1たす1でしょ!?
係)あのな、「TOの後ろ」は「計算結果を入れる箱(変数)」だぞ!
「1」という数字そのものに、さらに計算結果を上書きできるわけねーだろ!宇宙の法則が壊れるわ!
な)あー…そゆこと…。
数字じゃなくて、箱の名前を書くってことっすか。
ADDは計算ではなく「箱の更新」
係)1でやるからわからなくなるんだよ。
お前数学とか苦手だっただろ。 変数をAとBとしたらどう書く?
な)ADD A TO B ってことっすか。 そういや、基本は右から左でしたっけ? 小2だから覚えられないっつーの。
係)これを数式に直すとどうなるか分かるか?
な)えーとA + Bっすかね。
係)それだと「結果をどこに入れるか」が抜けてる。
Excelならセルに = A + B と書けばそこに結果が入るが、COBOLは違う。 ADD A TO B を日本語にすると「A を B に足す」だ。
つまり、こうなる。 B = B + A
な)へ?
B = ってなんすか? Bはもうあるじゃないっすか。間違いっすか?
係)そうじゃない。「BにAを足して、その結果でBを書き換える(更新する)」って意味だ。
COBOLでは「変数は箱」だ。 例えば、A = 5、B = 10 だったとする。
ここで、ADD A TO Bを実行すると、計算は B = 10 + 5 になる。
結果、 A = 5 (そのまま) B = 15 (更新される) となるわけだ。
な)おー! Bの中身がどんどん増えていくんすね
係)お前の体型とおなじだな、ぶくぶく太っていくと。
な)ぶくぶくとか失礼な!ぷっくりですよ!
係)どっちでも良いわ!
な)ぜんぜん違うじゃないっすか!
係)どっちでも良いんだよ、お前がデブでも、なんでも!
な)ひど!
係)いいか、だからCOBOLは「どこを書き換えるか」が大事になるというわけだ。
つまり、COBOLの ADD は数学式ではなくデータ更新命令だってことだ。
な)ほむ
TOの後ろが太る(更新される)
係)じゃあ、ここで現場でよくやるミスだが、これはどうなる?
ADD TOTAL TO SALES
な)えーと⋯ TOの後ろがふっくらするんだからSALES = SALES + TOTALってことっすか?
…ん、あれ? これ逆じゃないすか?
普通、毎回の売上(SALES)を、合計(TOTAL)に足していきますよね?
これじゃ、合計額を1件の売上に足しちゃってますよ!
係)そう、正解はADD SALES TO TOTALだな。
だからCOBOLでは「TOの後ろが更新(貯蓄)される変数」ということだけは、死ぬ気で、いや死んでも覚える必要がある。
死んでこい。
おむすび
な)いや、仕事中に上司が発言する内容じゃないでしょ、それ…。
そもそも、これ全然ただの足し算じゃないじゃないっすか!
「TO」とか「AをBに」とか、算数じゃなくてただの英語の長文読解じゃないっすか…
僕は小学生でしゅ!実家は貧乏なんで、お受験してない普通の公立小学校でしゅ!英語の授業はまだなんでしゅ!
係)親にも嫌われてただけだろが。
な)ひど!!
てか「にも」てなんすか「にも」って。ファインディング・ニモってことっすか!そうなんすか!そうなんすね!かわいいっすもんね。俺にぴったりですよねー。
係)なんでポジティブ変換は簡単にできるんだよ⋯
係長のワンポイント
ADDは「計算式」じゃない。
どの箱を書き換えるかを決める命令だ。TOの後ろに書いた箱だけが更新される。
だからADD A TO BはB = B + Aになる。
COBOLでは「結果の場所」を間違えると、計算は正しくても処理は壊れる。


コメント