Data type conversion

LotusScript® implicitly converts data from one type to another in the following situations.

Numeric operations

When numeric values with different data types are used in a numeric operation, LotusScript® converts the values to the same data type for evaluation.

In general, LotusScript® converts to the higher data type, based on this list (lowest to highest): Byte, Integer, Long, Single, Double, Currency. For example, in an operation with one Integer operand and one Double operand, LotusScript® converts the Integer value to a Double before evaluating the expression.

Specific rules for conversion in operations are detailed in the documentation of the individual operators.

Argument passing

When a numeric argument is passed by value to a procedure, LotusScript® tries to convert the value if it is not the expected data type. If the value is too large, the operation generates an error.

When a numeric argument is passed by reference to a procedure, the data type of the reference must match that of the declared argument, unless the declared argument is Variant.

Variant variables

When a value is contained in a Variant variable, LotusScript® tries to convert the value to a number or a string, depending on the context.

Data type conversion treats a value of one data type as though it were a value of a different data type or performs an operation on a value of one data type to produce a value of another data type. Some form of data type conversion is involved when you add two numbers of different data types together, print the hexadecimal representation of a decimal number as a string, or calculate a date/time value (by treating that value as though it were a number).You can perform a data type conversion explicitly with the functions that LotusScript® provides, you can choose between the two methods of conversion, or LotusScript® can perform the conversion automatically. For example:

Dim aString As String
Dim aDouble As Double
Dim aFloat As Currency
Dim aVariantV As Variant

aString$ = "123.45"
aDouble# = 678.90

' Explicitly convert a string to a Currency value. 
' That is, assign the return value of the conversion
' function CCur, which takes a String argument, to a variable
' of type Currency. 
aFloat@ = CCur(aString$)
Print aFloat@
' Output: 123.45
' Automatically convert a Double value
' to a Currency value by assignment. You
' could explicitly convert the value of
' aDouble# to a Currency value before
' assigning it to aFloat@. You might do
' this for the purposes of documentation.
aFloat@ = aDouble#
Print aFloat@

' Output: 678.9 ' Automatically convert a Variant value ' of type String to a Currency value by ' addition, and then convert the ' resulting Currency value to a value ' of type Double by assignment. You can make ' both of these conversions explicit if you want. aVariantV = aString$ aDouble# = aVariantV + aFloat@ Print aDouble# ' Output: 802.35