COBOL2002 言語 拡張仕様編
COMP-X項目は,符号なし2進項目を扱うものであり,2進項目(BINARY項目)が書けるところならば,COMP-X項目を書ける。ただし,機能によってはCOMP-X項目を2進項目として扱う場合がある(「26.5.2 COMP-X項目」の「(6) COMP-X項目が2進項目として扱われる個所」参照)。
COMP-X項目に対するPICTURE文字列中の記号('9','A'および'X')の個数とその項目に割り当てられる記憶域のサイズの規則に従う。その規則を次に示す。
なお,COMP-X項目は,-Bin1Byteオプション(1バイト2進機能)指定の有無の影響を受けない。
| PICTURE記号が'9'の場合 | PICTURE記号が'A'または'X'の場合 | |||
|---|---|---|---|---|
| PICTURE句の'9'の個数 | 割り当てられる記憶域のバイト数 | PICTURE句の'A'や'X'の個数 | 割り当てられる記憶域のバイト数 | 仮定される'9'の個数 |
| 1〜 2 | 1 | 1 | 1 | 2 |
| 3〜 4 | 2 | 2 | 2 | 4 |
| 5〜 9 | 4 | 4 | 4 | 9 |
| 10〜18 | 8 | 8 | 8 | 18 |
格納できる数値は,割り当てられた記憶域に収まる2進数の最大値が限度となる。
なお,COMP-X項目は,-DigitsTruncオプション(2進項目のけた落とし)の影響を受けない。
2進データ項目と同じ記憶方式に従って記憶される。システムのバイナリ形式のデータがリトルエンディアンの場合,-BigEndian,Binオプションの有無によって記憶方式を切り替える。
-BigEndian,Binオプションあり:ビッグエンディアン形式で記憶。
-BigEndian,Binオプションなし:リトルエンディアン形式で記憶。
-BigEndian,Binオプションについては,マニュアル「COBOL2002 ユーザーズガイド」またはマニュアル「COBOL2002 使用の手引 手引編」のコンパイラオプションを参照のこと。
| 'A','X'の個数 | バイト数 | 仮定される'9'の数 |
|---|---|---|
| 1 | 1 | 2 |
| 2 | 2 | 4 |
| 4 | 4 | 9 |
| 8 | 8 | 18 |
COMP-X項目は,SYNCHRONIZED句の影響を受けないため,直前の項目に続けて配置される。
01 A PIC 9(9) COMP-X VALUE 65538. …(1)
01 B PIC 9(4) COMP-X. …(2)
MOVE A TO B. …(3)
(1)は4バイト(00010002)16である。
(2)は2バイトである。
(3)のBには(0002)16が入る。
01 A PIC 99V99 VALUE 12.34.
01 B PIC 9(5) VALUE 65537.
01 C PIC 9(4) COMP-X.
MOVE A TO C. …(1)
MOVE B TO C. …(2)
(1)のCには(000C)16が入る。
(2)のCには(0001)16が入る。
01 A PIC 9(4) COMP-X VALUE 65535.
01 B PIC 9(4) COMP.
01 C PIC 9(4).
MOVE A TO B. …(1)
MOVE A TO C. …(2)
(1)のBには-DigitsTruncオプション指定がないときは-1が入り,-DigitsTruncオプション指定があるときは5535が入る。
(2)のCには5535が入る。
COMP-X項目の転記できる組み合わせは,2進項目の転記の組み合わせと同じとする。
該当する項目が算術演算の受け取り側作用対象のときに,その文の中にON SIZE ERRORまたはNOT ON SIZE ERROR指定が含まれるとき,PICTURE文字列の'9'の数によって,けたあふれ条件が生じたかどうかが判定される。けたあふれが発生しないときだけ,演算結果が受け取り側作用対象に収められる。
ON SIZE ERRORまたはNOT ON SIZE ERROR指定が含まれない場合,受け取り側作用対象の項目の範囲外になる2進上位けたを切り捨てて格納される。
| COMP-X項目のけた数 | 2進項目のけた数 |
|---|---|
| 1〜 2 | 3 |
| 3〜 4 | 5 |
| 5〜 9 | 10 |
| 10〜18 | 20 |
COMP-Xの比較の組み合わせは,2進項目の比較の組み合わせと同じとする。
DISPLAY文のデータ項目(作用対象)とハードウェア装置の間のデータ変換の規則を次に示す。
| 作用対象 | データ変換 | 項目のサイズ |
|---|---|---|
| COMP-X項目 | LEADING SEPARATE指定の外部10進項目に変換。 | 割り当てられる記憶域に格納できるけた数を持つLEADING SEPARATE指定の外部10進項目のサイズ。ただし,8バイトのCOMP-Xのときは18けたとする。 |
次に示す個所にCOMP-X項目を指定した場合,2進項目として扱われる。
埋め込み変数のデータ項目にCOMP-X項目を書いたときは,そのまま符号なしデータとして扱う。
索引ファイルの主レコードキーと副レコードキーおよび合成キーを構成するデータ項目にCOMP-X項目を書くときは,2,4バイトのCOMP-X項目でなければならない。
All Rights Reserved. Copyright (C) 2003, 2017, Hitachi, Ltd.