【COBOL 読み2-9-1】伝えることの大切さ〜BYで積み上げ下げ

🧩今日の学び
PERFORM VARYINGは、FROM=開始BY=ごとにUNTIL=終わりを日本語で読むと一気に理解できる
・BYは省略されがちだが、伝えないと読み手に意図が伝わらない重要要素
・増加だけでなく、減少や小数も扱えることでループ表現の幅が大きく広がる

今日のコード

       MOVE 1 TO CNT.

       PERFORM VARYING CNT FROM 1 BY 1 UNTIL CNT > 5
           DISPLAY "COUNT: " CNT
       END-PERFORM

       DISPLAY "Done looping.".

なるお)次行っちゃいます?もっかい饅頭持ってきます?だったら帰りますね!

係長)なんで帰るんだよ!ふざけんな!

な)なんか係長ヤンキー時代の名残が出てきてます?

スケバン刑事から思い出しちゃいました?

係)お前な、黒歴史を掘り起こそうとすんなよ。

な)うちの係長スケバン刑事らしいってXで広めときましたよ。拡散希望とか初めて使いました。

係)なんで拡散希望してんだ…俺がスケバン刑事みたいな言い方やめろ。

な)まぁまぁ、これで係長も人気になるかもですね!

PERFORM VARYINGの基本:FROM・BY・UNTILを日本語で読む

係)はぁ…気が抜けるわ…

じゃあ今日のコードだ。
— テーマは「PERFORM VARYING」 “COBOLのfor文”だ。

な)あー、なんかやりましたよねー。やった記憶はあります。
でも。記憶があるのと、理解しているのとは違いますねー。

BYUNTILは同じようなもんじゃないすか。FROMは「◯から」だからー。あーごちゃってる記憶だけが鮮明です!

BYの正体は「ごとに」:伝えないと伝わらないCOBOL

係)FROMが初期値、BYが増える数、UNTILが終了条件だ。

BYは「〜ごとに」って訳があるだろ?

な)え…ってことは、から、ごとに、以上まで…ってこと?

それ前回言ってないです!

ちゃんと言わないと伝わらないんですよ!I LOVE YOUを言わないから大切だって伝わってないんですよ!今から奥さんに言ってきてくださいよ!一緒に行きますか?

係)あーもう、うるさい!なんでお前を連れてくんだよ!

いいか、つまりだ、

CNT1から始めて、1ずつ増やして、CNT5を超えるまでループ。

ということだ。

な)もうBYの意味ぐらいヒントとして入れといてくださいよー。

      /BYは「ごとに」だ!がんばれなるお!大盛りカツ三種盛りカレーがまってるぞ!

みたいに!

係)なんで、お前に向けてコメント書くんだよ。カレーだけで満足してろよ…

な)だって、やる気スイッチ押してくれないとー。やる気スイッチはカレーだけで押せるわけ無いじゃないですか…

係)それお前次第だろ…

増やすだけじゃない:BYはマイナスも小数もいける

な)あれ?これ「1ずつ増やす」以外にもできるんすか?

例えば「2ずつ」とか「マイナス方向」とか。

係)もちろんできる。
BY 2 にすれば2ずつ増えるし、BY -1 ならカウントダウンもできる。

な)うほー!だったら、小数もいけちゃったりします?

係)結論から言うと、できる。
まぁ、数値としては通る。

COBOLのBY句は整数限定じゃなくて、小数(浮動小数点)でもOKだぞ。

たとえばこう書ける。

       MOVE 0 TO DISTANCE
       PERFORM VARYING DISTANCE FROM 0 BY 0.5 UNTIL DISTANCE > 2.5
           DISPLAY "走行距離:" DISTANCE " km"
       END-PERFORM

これなら
0 → 0.5 → 1.0 → 1.5 → 2.0 → 2.5
って進むぞ。

な)おお、まじすか!
ってことはBY -2.5とかもいけるんすね!

係)そう、マイナスもOK。
減算ループになる。

       PERFORM VARYING CNT FROM 10 BY -2.5 UNTIL CNT < 0
           DISPLAY "残り:" CNT
       END-PERFORM

おむすび

な)つまり、42.195でもいけるってわけですね!

これで、世界のマラソンの距離をループで積み上げて、総距離を計算させられる!

係)そもそもお前、スポーツなんかしないだろ。

な)しますよ!咀嚼も立派なスポーツですよ!

係)お前生きてるだけでスポーツなのかよ…

な)生きてるって素晴らしいですね!

係)ほんと、どこまでもポジティブだな…

係長のワンポイント

PERFORM VARYING は「FROM = 始点BY = 刻みUNTIL = 終点」を日本語で読むのがコツだ。
BY は「増やす数」ではなく「◯◯ごとに進む」という“変化量”の指定。
だからBY -1でカウントダウン、BY 0.5で小刻みループも成立する。
UNTILは“止める条件”なので、最後の値が実行されるかは条件式次第になる。
BYをどう読むかで、PERFORM VARYINGの理解度は一段上がるぞ。

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

この記事を書いた人

コメント

コメントする