Dim ステートメント (LotusScript 言語)

変数を宣言します。

構文

{ Dim | Static | Public | Private } variableDeclaration [ , variableDeclaration ]...

要素

Dim | Static | Public | Private

Dim、Static、Private、Public のいずれかのキーワードを付けて変数を宣言します。

既定では、Dim は変数が Static でなく、Private であることを示します。

キーワード Static は、プロシージャスコープ内で使用できますが、モジュールやクラスのスコープ内では使用できません。キーワード Public とキーワード Private は、モジュールやクラスのスコープ内では使用できますが、プロシージャスコープ内では使用できません。

variableDeclaration

宣言は、宣言する変数の種類に応じて次のいずれかの形式をとります。

カンマで区切れば、1 つのステートメント内で変数をいくつでも宣言できます。

variableName

宣言する変数の名前です。

dtSuffix

オプション。variableName のデータ型を指定します。データ型の接尾辞とその接頭辞が表すデータ型は次のとおりです。@ は Currency、# は Double、% は Integer、& は Long、! は Single、$ は String に対応します。

type

スカラー変数、リスト、配列の場合は省略可能です。有効な LotusScript® のデータ型は、ユーザー定義のデータ型、ユーザー定義クラス、または製品クラス。これは、variableName の型を指定します。

type がクラス名のとき、variableName はその型のオブジェクト参照です。値は、そのクラスのインスタンスや派生クラスのインスタンスの参照、または値 NOTHING だけです。

New

オプション。type がユーザー定義クラスまたは製品クラスのときにのみ有効です。New を記述すると、type で示されたクラスの新しいオブジェクトが作成され、その参照が variableName に代入されます。

IBM® 製品によっては、製品の関数や製品オブジェクトのメソッドなど、スクリプト内で製品オブジェクトを作成するために他のメカニズムを提供するものがあります。詳しくは、ソフトウェアのマニュアルを参照してください。

argList

オプション。これは New キーワードが記述されているときにのみ有効です。

ユーザー定義クラスでは、argList はクラスコンストラクタサブルーチン New から要求され type で指定したクラス内で定義される引数をカンマで区切ったリストです。製品クラスについては、製品のマニュアルを参照してください。

bounds

オプション。bounds は、固定長配列の次元を示すカンマで区切られたリストです。各次元の範囲は次の構文で指定します。

[ lowerBound To ] upperBound

ここで、lowerBound は、サブスクリプトに示す配列の下限値で、upperBound は上限値です。lowerBound を指定しない場合、Option Base ステートメントで 1 に変更しない限り、配列要素の下限値の既定はゼロ (0) です。例えば、既定の下限値である 0 が使用された場合、次のステートメントは予想に反して 3 個の文字列でなく 4 個の文字列用の領域を割り当てます。

		Dim strArray(3) as String

bounds を定義しないと、配列は動的配列であると定義されます。

使用法

Public キーワードは、クラスのメンバを宣言するときを除いて、アプリケーションオブジェクトのスクリプトに直接記述したり、アプリケーションオブジェクトスクリプトの %Include ファイル内で使用することはできません。Public 宣言は (Globals) で使用してください。

明示的な宣言と暗黙的な宣言

変数名は明示的または暗黙的に宣言できます。Dim ステートメントは名前を明示的に宣言します。名前が暗黙的に宣言されるのは、明示的に宣言されていない場合に使用されるとき (参照されるとき)、または名前を参照するモジュールに使用される別のモジュール内で Public 名として宣言されていないときです。スクリプトに Option Declare ステートメントを含めると、暗黙的な宣言を禁止できます。

データ型を指定する

variableDeclaration では、dtSuffix または As type の一方だけを指定できます。どちらも指定しない場合、variableName のデータ型は Variant になります。

データ型の接尾辞は、指定しても変数名の一部ではありません。変数名をスクリプト内で使用するとき (参照するとき) は、必要に応じて適切な接尾辞を付けられます。

配列を宣言する

固定長配列では、Dim ステートメントに配列の型、次元数、各次元の要素の範囲を指定します。Dim は配列の要素の領域を確保し、その要素をデータ型に対応した適切な値に初期化します (後述の「変数の初期化」を参照してください)。

動的配列では、Dim に配列の型のみを指定します。配列の次元数や各次元の要素の範囲は定義されません。そのため、配列の要素に領域は確保されません。動的配列の宣言は、後の ReDim ステートメントで完成されなければなりません。

配列は 8 次元まで指定できます。

配列の要素の範囲は -32,768 から 32,767 です。

リストを宣言する

リストの宣言時は空です。要素も領域の確保もありません。リストタグを使用したリスト名が Let や Set などの代入ステートメントの左辺に最初に表示されるとき、要素がリストに追加されます。

文字セットがシングルバイトの場合は、Option Compare によってリスト名の大文字/小文字を区別するかどうかが決まります。例えば、Option Compare Case が有効な場合、「ListA」と「Lista」は異なる名前と見なされます。逆に Option Compare NoCase が有効である場合、これらの名前は同じと見なされます。文字セットが 2 バイト (全角) の場合、リスト名の大文字と小文字、全角と半角は常に区別されます。

オブジェクト参照変数を宣言する

type がクラス名で、キーワード New が指定されていない場合は、宣言されたオブジェクト参照変数の初期値は NOTHING です。オブジェクト参照変数に別の値を代入する場合は、スクリプト後半で Set ステートメントを使用します。

Dim variableName As New className では、実行コードが生成されます。コンパイルされたモジュールを保存するとき、モジュール単位の実行コードは保存されないため、モジュールレベルでこのようなステートメントを使用するときには注意してください。ソフトウェアによっては、実行可能ステートメントをモジュールレベルで配置することを禁止しているものもあります。

実行コードではないオブジェクト参照変数を、モジュールレベルで Dim variableName As className を使用して宣言するときは、プロシージャ内で Set ステートメント (実行コード) を使用して、オブジェクト参照変数をオブジェクトにバインドします。

New キーワードは配列の宣言やリストの宣言では無効です。

変数を初期化する

変数の宣言では、既定値への初期化も行われます。

宣言のスコープ

Option Public が記述されていない限り、モジュールレベルでの既定のスコープは Private です。

クラス内の変数宣言の既定のスコープは Private です。

変数を定義するための Public と Private は、モジュール、またはクラスの定義内でのみ使用できます。プロシージャ内では、自動的に Private になります。ユーザー定義型のメンバは、自動的に Public になります。これらは一度設定されると変更できません。