変数宣言では、識別子を作成してそのスコープと存続期間を決めます。次に、その変数が参照するメモリの位置に格納できるデータの型を指定すると、LotusScript® がその位置へ初期値を書き込みます。変数は明示的に宣言することをお勧めします。Dim ステートメントやそのバリエーションの 1 つを使用して、スカラー変数を明示的に宣言します。使用するバリエーションは、変数を宣言するアプリケーション領域、および変数に与えるスコープと存続期間によって異なります。
次の図は、1 つのスカラー変数 (この例では String 型の変数) を宣言する構文をまとめたものです。
スカラー変数の宣言に使用する構文の要素は、次の表に示すとおりです。
要素 |
説明 |
---|---|
Dim |
Private スコープを持つ変数を宣言します。 |
Public、Private |
Public は Public スコープを持つ変数を宣言します。Private は Private スコープを持つ変数を宣言します。 |
Static |
プロシージャ内で宣言された変数だけに適用されます。Static 変数は、プロシージャが定義されたモジュールがロードされている間、プロシージャへの呼び出し間で値が (消滅するのではなく) 保持されます。 |
varName |
変数の名前です。モジュールレベルで、またはプロシージャ内で、LotusScript で認識されるデータ型接尾辞のどれでも付けられます。 これによって、変数が保持できるデータの型が決まります。宣言時に変数名にデータ型の接尾辞を付けることができるのは、宣言に As dataType 節を含めない場合だけです。 |
As dataType |
変数が保持できるデータの型を指定します。この節を含める場合、varName にはデータ型の接尾辞を付けることはできません。この節は、ユーザー定義のデータ型またはクラスの定義内で変数を宣言する場合に必要ですが、モジュールレベルまたはプロシージャ内の変数の宣言では、省略できます。 |
変数を明示的に宣言する場合、LotusScript はその変数に既定の初期値を代入します。
変数の型 |
初期値 |
---|---|
数値 (Boolean、Byte、Integer、Long、Single、Double、Currency) |
0 |
可変長 String 型 |
"" (空の文字列) |
固定長 String 型 |
Chr(0) (NULL 文字) で埋められた、指定の長さの文字列 |
宣言時に変数名の後ろにデータ型の接尾辞を付けたかどうかに関係なく、明示的に宣言されたスカラー変数を参照できます。
以下に例を示します。
Public firstName$
Public lastName As String
Dim age%
Dim money As Currency
firstName$ = "Roman"
lastName$ = "Minsky"
age% = 12
money@ = 150.75
Print firstName & " " & lastName & ", " & age &", $" & money
' Output: Roman Minsky, 12, $150.75
Print firstName$ & " " & lastName$ & ", " & age% &", $" & money
' Output: Roman Minsky, 12, $150.75
String 型の変数には、Unicode 文字セットの一連の文字が含まれます。Unicode は、文字セット中の各文字を 2 バイトを使用して表す文字エンコードシステムです。LotusScript では、アプリケーションをコンパイルする前に、入力データが Unicode 形式に変換されます。
String 型の変数は可変長の場合も固定長の場合もあります。可変長の String 型変数を宣言する構文は、前述の図に示されています。固定長の String 型変数を宣言する構文は、次のとおりです。
charNum 引数は、varName が charNum で指定された文字数で構成される固定長の String 型変数であることを指定しています。
文字列を固定長の String 型変数に代入する場合、宣言された長さに合うように、必要に応じて文字列は切り捨てられたり、後続の空白で埋められます。
以下に例を示します。
Dim myName$
Dim myTown As String
' myName and myTown are variable-length string variables.
Dim myState As String * 2
' myState is a 2-character fixed-length String variable.
Dim myZIP As String * 5
' myZIP$ is a 5-character fixed-length String variable.
' If myZIP$ is assigned a value of more than 5 characters,
' that value will be truncated to its first 5 characters.
myName$ = "Mark"
myTown$ = "Centerville"
myState$ = "MA"
myZIP$ = "02100-9999"
Print myName$
' Output: Mark
Print myTown$ & ", " & myState$ & " " & myZIP$
' Output: Centerville, MA 02100
Dim ステートメントとそのバリエーションを使用して、モジュールレベルまたはプロシージャ内で一度に複数の変数を宣言できます。モジュールレベルでは、構文は次のとおりです。
{ Dim|Public| Private}varName1[ As dataType ], varName2 [ As dataType], ...
プロシージャ内では、構文は次のとおりです。
{ Dim | Static } varName1 [ As dataType ], varName2 [ As dataType ], ...
すべての変数を明示的に宣言することが重要です。以下に例を示します。
DIM X, Y AS INTEGER
この結果、Y のデータ型は INTEGER になりますが、X は Variant になります。正しい構文は次のとおりです。
DIM X AS INTEGER, Y AS INTEGER
As dataType 節を使用しない場合にデータ型の接尾辞を変数名の後ろに付ける (および As dataType 節を使用する場合にはデータ型の接尾辞を付けない) という規則は、単一のスカラー変数の宣言と同じです。
以下に例を示します。
Dim aString$, anInt%, aDouble As Double, aCurrency@
aString$ = "Hello"
Print TypeName(aString$) & ": " & aString$
' Output: STRING: Hello
anInt% = 123
Print TypeName(anInt%) & ": " & anInt%
' Output: INTEGER: 123
aDouble# = 123.45
Print TypeName(aDouble) & ": " & aDouble#
' Output: DOUBLE: 123.45
aCurrency@ = 456.78
Print TypeName(aCurrency@) & ": " & aCurrency@
' Output: CURRENCY: 456.78
Sub MySub
Dim aString As String * 2, anotherString$, anInt%
Static aDouble#, anotherDouble#
aString$ = "Hi"
Print TypeName(astring$) & ": " & aString$
anotherString$ = "World"
Print TypeName(anotherstring$) & ": " & anotherString$
anInt% = 234
Print TypeName(anInt%) & ": " & anInt%
aDouble# = aDouble# + 1
anotherDouble# = aDouble# * 2
Print TypeName(anotherDouble#) & ": " & anotherDouble#
End Sub
Call MySub
' Output:
' STRING: Hi
' STRING: World
' INTEGER: 234
' DOUBLE: 2
Call MySub
' Output:
' STRING: Hi
' STRING: World
' INTEGER: 234
' DOUBLE: 4