データ型変換

LotusScript® では、次に説明する状況で、あるデータ型の値が別のデータ型に暗黙的に変換されます。

数値の演算

異なるデータ型の複数の数値が数値演算に使用されると、値は同じデータ型に変換されて評価されます。

通常、LotusScript では Byte、Integer、Long、Single、Double、Currency の順に従って、より高いデータ型に変換されます。例えば、Integer 型のオペランドと Double 型のオペランドがある演算では、式を計算する前に Integer 型の値が Double 型の値に変換されます。

演算における変換規則の詳細については、各演算子のドキュメントを参照してください。

引数渡し

引数を数値でプロシージャに渡す場合、プロシージャが必要とするデータ型でなければ、その値が変換されます。値が大きすぎてそのデータ型に入らなければ、エラーになります。

引数を参照によってプロシージャに渡す場合、参照のデータ型は宣言された引数のデータ型と一致しなければなりません。ただし、宣言された引数が Variant 型の場合は除きます。

Variant 型の変数

変換される値が Variant 型の変数に格納されていると、文脈に応じて、LotusScript は値を数値または文字列に変換しようとします。

あるデータ型の値を異なるデータ型の値であるかのように扱ったり、あるデータ型の値について演算を実行して別のデータ型の値を生成する必要があることがあります。このような処理をデータ型の変換といいます。異なるデータ型の 2 つの数値を加算する、10 進数を文字列として 16 進表記で出力する、または日付/時刻の値を数値であるかのように扱って計算する場合などで、何らかの形でデータ型変換が必要になります。ユーザーが LotusScript が備えている関数を使用して明示的にデータ型変換を実行できる場合、2 つの変換方法のうちの 1 つをユーザーが選択できる場合、自動的に変換される場合とがあります。以下に例を示します。

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@

' 出力: 678.9 ' 自動的に String 型の Variant 値を加算により ' Currency 値に変換し、 ' 結果の Currency 値を代入操作により ' Double 型の値に変換します。 ' 必要に応じて、これら 2 つの変換を明示的にすることができます。 aVariantV = aString$ aDouble# = aVariantV + aFloat@ Print aDouble# ' 出力: 802.35