COBOLに関しましてお伺いしたいことがございます。
COBOLで四捨五入する際に「ROUNDED」という関数を使用すると思います。
この時に、出力される結果が、想定している値と異なっており非常に困っております。
ご教授いただきたく存じます。
実際のCOBOLのコードは以下の様なコードです
※COBOLが未経験のため、正しい記載になっていないと思います。申し訳ございません
[変数1] PIC s9(11) [変数2] PIC s9(11) CONPUTE [変数2] ROUNDED = [変数1]/6/1000
上記のコードに対し、[変数1]に以下の様な数値が入っていた場合
[変数1] = 20036998
[変数2]が 3340と出力されます。
想定していた数値は3339だったため、原因の調査をしております。
勝手な想定ですが、計算の流れが
『CONPUTE [一時変数] ROUNDED = [変数1]/6 』 => 3339499.7 => 四捨五入され3339500
=>『CONPUTE [変数2] ROUNDED = [一時変数]/1000 』 => 3339.500 => 四捨五入され33340
になっているのではないかと思っております。
上記のプログラムは大変古い汎用機で動いているため、プログラムの改変や、四則演算のみ行う等のことは
止められております。
検証ができず、ネットにも情報が落ちていないため、困っております。
ご教授いただければと思います。
また、もしもCOBOLを簡単に実装できる方法等あれば教えていただきたく存じます。
そちらの環境で検証してみたいと思います。
説明が長くなり申し訳ございません。
何卒、お願い申し上げます。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/13 00:38
2019/06/13 00:59 編集