COBOL で桁落ち[プログラミング]
(2019-09-05 12:42:15) by shinoda


今の仕事が 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 には若干苛立ちをおぼえるのお。

コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8