Bridges > COM Import Bridge and ActiveX > COM Import Bridge > COM-IDL Data Type Mapping

# COM-IDL Data Type Mapping

When data moves from IDL to a COM object and back, IDL handles conversion of variable data types automatically. The data type mappings are shown below.

COM Type | IDL Type
--- | ---
BOOL (VT_BOOL) | Byte (true =1, false=0)
ERROR (VT_ERROR) | Long
CY (VT_CY) | Double (see note below)
DATE (VT_DATE) | Double
I1 (VT_I1) | Byte
INT (VT_INT) | Long
UINT (VT_UINT) | Unsigned Long
VT_USERDEFINED | The IDL type is passed through
VT_UI1 | Byte
VT_I2 | Integer
VT_UI2 | Unsigned integer
VT_ERROR | Long
VT_I4 | Long
VT_UI4 | Unsigned Long
VT_I8 | Long64
VT_UI8 | Unsigned Long 64
VT_R4 | Float
VT_BSTR | String
VT_R8 | Double
VT_DISPATCH | IDLcomIDispatch
VT_UNKNOWN | IDLcomIDispatch

## Note on the COM CY Data Type

The COM CY data type is a scaled 64-bit integer, supporting exactly four digits to the right of the decimal point. To provide an easy-to-use interface, IDL automatically scales the integer as part of the data conversion that takes place between COM and IDL, allowing the IDL user to treat the number as a double-precision floating-point value. When the value is passed back to the COM object, it will be truncated if there are more than four significant digits to the right of the decimal point.

For example, the IDL double-precision value 234.56789 would be passed to the COM object as 234.5678.