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