【COBOL 書き1-2】ADD TOで足し算やってみよう!〜小2でもできるか!?

🧩今日の学び
・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でやるからわからなくなるんだよ。

お前数学とか苦手だっただろ。 変数をABとしたらどう書く?

な)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 = 5B = 10 だったとする。

ここで、ADD A TO Bを実行すると、計算は B = 10 + 5 になる。

結果、 A = 5 (そのまま) B = 15 (更新される) となるわけだ。

な)おー! Bの中身がどんどん増えていくんすね

係)お前の体型とおなじだな、ぶくぶく太っていくと。

な)ぶくぶくとか失礼な!ぷっくりですよ!

係)どっちでも良いわ!

な)ぜんぜん違うじゃないっすか!

係)どっちでも良いんだよ、お前がデブでも、なんでも!

な)ひど!

係)いいか、だからCOBOLは「どこを書き換えるか」が大事になるというわけだ。

つまり、COBOLの ADD は数学式ではなくデータ更新命令だってことだ。

な)ほむ

TOの後ろが太る(更新される)

係)じゃあ、ここで現場でよくやるミスだが、これはどうなる?

📝 COBOL sample.cob
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 BB = B + Aになる。
COBOLでは「結果の場所」を間違えると、計算は正しくても処理は壊れる。

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

この記事を書いた人

コメント

コメントする

CAPTCHA