LOTUSSCRIPT 言語


Dim ステートメント

変数を宣言します。

構文

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

要素

Dim | Static | Public | Private


variableDeclaration 使用法

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

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

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

変数を初期化する

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


宣言のスコープ

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

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

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


関連項目