COBOL2002 言語 拡張仕様編

[目次][索引][前へ][次へ]

18.1.2 VARIANT値とCOBOLデータの変換規則(OLE2オートメーションインタフェース機能)

<この項の構成>
(1) COBOLデータからVARIANT値への変換規則
(2) VARIANT値からCOBOLデータへの変換規則

(1) COBOLデータからVARIANT値への変換規則

OLEメソッドに渡す引数やOLEプロパティへの設定で指定されたCOBOLのデータ項目は,次に示す変換規則に従って暗黙的にVARIANT値に変換される。

表18-1 COBOLデータ項目からVARIANT値への変換規則

COBOLデータ項目 VARIANT値5
表意定数(NULL) VT_NULL(1)
2進項目1,外部10進項目1,内部10進項目1,数字定数1,表意定数(ZERO) VT_I2(2)
2進項目2,外部10進項目2,内部10進項目2,数字定数2 VT_I4(3)
単精度内部浮動小数点項目 VT_R4(4)
倍精度内部浮動小数点項目,外部浮動小数点項目,浮動小数点定数,2進項目3,外部10進項目3,内部10進項目3
数字定数3
VT_R8(5)
英字項目,英数字項目,英数字定数,固定長集団項目(日本語集団項目を含む),可変長集団項目,日本語項目,日本語文字定数,数字編集項目 VT_BSTR(8)
OLEオブジェクト参照データ項目 VT_DISPATCH(9)
内部ブール項目4,外部ブール項目4,ブール定数4 VT_I2→VT_BOOL(11)

注1
組み込み関数のCONVERT-TO-VARIANT関数での明示的な変換も,いったん上表の変換規則に従ったVARIANT値に変換し,さらに目的のVARIANT値へと変換する。

注2
オブジェクト参照データ項目,アドレスデータ項目および指標データ項目は,バリアントデータ型には変換できない。

注※1
4けたまでの小数けたなし項目。

注※2
9けたまでの小数けたなし項目。

注※3
10けたを超えるまたは小数けたがある項目。

注※4
1けたの項目。

注※5
括弧内の数字はVARIANTのタイプを示す。

(2) VARIANT値からCOBOLデータへの変換規則

OLEメソッドの戻り値やOLEプロパティの取得で受け取ったVARIANT値は,次に示す変換規則に従って暗黙的にCOBOLのデータ項目に変換される。

表18-2 VARIANT値からCOBOLデータ項目への変換規則

VARIANT値5 COBOLデータ項目
VT_I2(2) 2進項目1,外部10進項目1,内部10進項目1
VT_I4(3) 2進項目2,外部10進項目2,内部10進項目2
VT_R4(4) 単精度内部浮動小数点項目
VT_R8(5) 倍精度内部浮動小数点項目,外部浮動小数点項目,2進項目3,外部10進項目3,内部10進項目3
VT_BSTR(8) 英字項目,英数字項目,固定長集団項目(日本語集団項目を含む),可変長集団項目,日本語項目
VT_DISPATCH(9) OLEオブジェクト参照データ項目
VT_BOOL(11)→VT_I2 内部ブール項目4,外部ブール項目4

注1
組み込み関数のVARIANT値からCOBOLデータ項目への明示的な変換も,いったん上表の変換規則に従ったVARIANT値に変換し,さらに目的のCOBOLデータ項目へと変換する。なお,変換元となる文字の右側に存在する空白は無視される。

注2
文字列変換(VT_BSTR型)の場合,データは常に左端をそろえて収められる。データを設定する領域が小さい場合は右端が切り捨てられる。しかし,大きい場合の空白詰めは行われない。JUSTIFIED句は適用されない。なお,変換元となる文字の右側に存在する空白は無視される。

注3
バリアントデータ型からオブジェクト参照データ項目,アドレスデータ項目および指標データ項目には変換できない。

注※1
4けたまでの小数けたなし項目。

注※2
9けたまでの小数けたなし項目。

注※3
10けたを超えるまたは小数けたがある項目。

注※4
1けたの項目。

注※5
括弧内の数字はVARIANTのタイプを示す。