LOTUSSCRIPT 言語
変数を宣言します。
構文
{ Dim | Static | Public | Private } variableDeclaration [ , variableDeclaration ]...
要素
Dim | Static | Public | Private
既定では、Dim は変数が Static でなく、Private であることを示します。
variableName
type がクラス名のとき、variableName はその型のオブジェクト参照です。値は、そのクラスのインスタンスや派生クラスのインスタンスの参照、または値 NOTHING だけです。
Lotus 製品によっては、製品の関数や製品オブジェクトのメソッドなど、スクリプト内で製品オブジェクトを作成するために他のメカニズムを提供するものがあります。詳しくは、Lotus ソフトウェアのマニュアルを参照してください。
ユーザー定義クラスでは、argList はクラスコンストラクタサブルーチン New から要求され type で指定したクラス内で定義される引数をカンマで区切ったリストです。製品クラスについては、製品のマニュアルを参照してください。
[ lowerBound To ] upperBound
ここで、lowerBound は、サブスクリプトに示す配列の下限値で、upperBound は上限値です。lowerBound を指定しない場合、Option Base ステートメントで 1 に変更しない限り、配列要素の下限値の既定はゼロ (0) です。たとえば、既定の下限値である 0 が使用された場合、次のステートメントは予想に反して 3 個の文字列でなく 4 個の文字列用の領域を割り当てます。
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 になります。これらは一度設定されると変更できません。
例 関連項目