COBOL2002 言語 拡張仕様編


24.3.1 2進項目のけた落とし(-DigitsTrunc)

-DigitsTruncを指定すると,COBOL原始プログラム中の転記文で受け取り側作用対象が2進項目の場合,送り出し側作用対象の有効けた(PICTURE句で指定した10進けた数)が受け取り側作用対象のけた数より大きいとき,上位けたの切り捨てを行う。

-DigitsTruncを指定しないと,COBOL原始プログラム中の転記文で受け取り側作用対象が2進項目の場合,送り出し側作用対象の値の有効けたが受け取り側作用対象の領域(2,4または8バイト)に入らないとき,そのバイト数に入りきらない部分を切り捨てる。

(備考)

COBOLは10進法を基調にしているので,厳密には-DigitsTruncが規格の仕様である。

(例)
       77 A PIC S9(5) COMP VALUE 12345.
       77 B PIC S9(4) COMP.
            :
           MOVE A TO B

Aの2進項目には2バイトの領域が割り当てられるので,-32768〜+32767の範囲の数値を格納できる。しかし,-DigitsTrunc指定時には,けた落としが行われ,転記後はBの項目の値は2345となる。

なお,例外名EC-SIZE-TRUNCATIONに対するTURN指令が有効で,送り出し側の有効けた数が受け取り側のけた数より大きいときは,このオプションの指定があっても,上位けたを切り捨てないで,EC-SIZE-TRUNCATION例外が成立する。