COBOL2002 言語 拡張仕様編


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

〈この項の構成〉

(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のタイプを示す。