今の仕事が NetCOBOL(PowerCOBOL)だって話は以前書いたと思う。
まあ、イベント駆動型の言語なんで、おおむね PowerCOBOL はそれほど違和感を感じることなく楽しく使ってるんだけど、それでも時々 「COBOL だなぁ(^^;;」と思わせられることがある。
そのひとつが変数代入時の桁落ち。
昨日も、21,002回(中途半端な数字なのは気にしないで(笑))回す処理が 1002回しか回らなくて、なんでやねんと思ったら、案の定、21002という回数をセットする変数が、
01 WK-COUNT PIC 9(4).
になってた(笑)
なので 5桁の数値が入らず、下 4桁だけがセットされたというわけ。
まあ、俺の単純ミスなんだけど、こういうのって普通はコンパイル時になんかエラーになったりワーニングが出たりせんもんかいな?
まあ、簡単に任意の桁の切り出しができるのが「便利」と言うことなのかもしれんが、例えば 5桁の数値から下 4桁の数値を切り出すのなら、ちゃんと明示的に、
01 WK-VAL.02 WK-H1 PIC 9(1).02 WK-T4 PIC 9(4).
という変数作って、
MOVE 12345 TO WK-VAL.
して、やればいいやん。よっぽど後でソースも読みやすい。
いや、1〜10桁の間で桁数は変化して、その中の下 4桁が取りたいんや・・・ってことなら、WK-H1 を 6桁にすればええだけや。
どっちにしても COBOLの場合、「実際、何桁になるかわからん」場合もちゃんと固定長で変数宣言せんといかん。ちゅうても、何十桁もあるような数値、そもそも扱わんやろ、COBOLで(笑)
というわけで、桁あふれしてもなんも教えてくれん COBOL には若干苛立ちをおぼえるのお。