🧩今日の学び
・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文”だ。
な)あー、なんかやりましたよねー。やった記憶はあります。
でも。記憶があるのと、理解しているのとは違いますねー。
BYとUNTILは同じようなもんじゃないすか。FROMは「◯から」だからー。あーごちゃってる記憶だけが鮮明です!
BYの正体は「ごとに」:伝えないと伝わらないCOBOL
係)FROMが初期値、BYが増える数、UNTILが終了条件だ。
BYは「〜ごとに」って訳があるだろ?
な)え…ってことは、1から、1ごとに、5以上まで…ってこと?
それ前回言ってないです!
ちゃんと言わないと伝わらないんですよ!I LOVE YOUを言わないから大切だって伝わってないんですよ!今から奥さんに言ってきてくださいよ!一緒に行きますか?
係)あーもう、うるさい!なんでお前を連れてくんだよ!
いいか、つまりだ、
CNT を1から始めて、1ずつ増やして、CNTが5を超えるまでループ。
ということだ。
な)もう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の理解度は一段上がるぞ。

コメント