配列

配列は同じデータ型の要素の集合に名前を付けたもので、各要素は集合内の位置によって、それぞれ個別にアクセスできます。LotusScript® の配列は、最大 8 次元まで持てます。

配列内の要素の位置は、サブスクリプト (またはインデックス) という 1 つ以上の座標で識別できます。要素を識別するために必要となるサブスクリプトの数は、配列の次元数と同じです。1 次元配列では、特定の要素の位置は 1 つのサブスクリプトで記述できます。2 次元配列では、1 つの要素に位置づけるには 2 つのサブスクリプトが必要です。

例えば、米国の州の名前を要素に持つ 1 次元配列では、集合内の特定の州の位置は、次のように 1 つのサブスクリプトで識別します。

Dim states(1 to 50) As String
states(1) = "Alabama"
states(2) = "Alaska"
states(3) = "Arizona"
' and so on.
Print states(2)
' Output: Alaska

各州で人口の多い順の 10 都市の名前を要素に持つ 2 次元配列では、最初のサブスクリプトが州を識別し、2 番目のサブスクリプトが都市名を識別します。

Dim statesAnd10Cities(1 to 50, 1 to 10) As String
statesAnd10Cities(1,1) = "Alabama, Birmingham"
statesAnd10Cities(1,2) = "Alabama, Mobile"
' ...
statesAnd10Cities(2,1) = "Alaska, Anchorage"
statesAnd10Cities(2,2) = "Alaska, Fairbanks"
' and so on.
Print statesAnd10Cities(1,2)
' Output: Alabama, Mobile

3 次元配列は、例えば各州で人口の多い 10 都市のそれぞれにおける、成人女性の数、成人男性の数、子供の数を含めることができます。

Dim statesAnd10CitiesAndPeople(1 to 50, 1 to 10, 1 to 3) _ 
   As Double
statesAnd10CitiesAndPeople(1,1,1) = 120748
' Number of adult males in Birmingham, Alabama.
statesAnd10CitiesAndPeople(1,1,2) = 145104 
' Number of adult females in Birmingham, Alabama.
' ...
statesAnd10CitiesAndPeople(2,1,1) = 116381 
' Number of adult males in Anchorage, Alaska.
statesAnd10CitiesAndPeople(2,1,2) = 109957
' Number of adult females in Anchorage, Alaska.
'...
Print StatesAnd10CitiesAndPeople(1,1,2)
' Output: 145104

配列のサイズ、つまり、次元数、および各次元の範囲は、配列の範囲リストで定義します。 各次元には整数値として指定される上限値と下限値があります。

LotusScript は、固定長配列と動的配列の両方をサポートします。

Dim ステートメントかそのバリエーションの 1 つを使用して、次の図にまとめたように配列を宣言します。

Breaks down the module into a Procedure, Class, and User-defined data types

配列宣言の構文要素は、次のとおりです。

要素

説明

Dim

Private スコープを持つ配列を宣言します。

Public、Private

Public は Public スコープを持つ配列を宣言します。Private は Private スコープを持つ配列を宣言します。

Static

プロシージャ内で宣言される配列だけに適用されます。Static 配列は、モジュールがロードされている間、プロシージャへの呼び出し間で (値が消滅するのではなく) 値を保持します。

arrayName

配列の名前です。モジュールレベルまたはプロシージャ内で、arrayName の後ろには LotusScript が認識するデータ型接尾辞を付けられます。 この接尾辞が配列が保持できるデータの型を決定します。ただし、配列名の後ろにデータ型の接尾辞を付けられるのは、宣言に dataType 節を含めない場合のみです。

bounds

arrayName の各次元の、カンマで区切られた範囲リストです。各次元の境界は、次の形式で指定されます。

 

[ lowerBound To ] upperBound

 

lowerBound はその次元に指定できるサブスクリプトの下限値で、upperBound は上限値です。lowerBound が指定されていない場合、Option Base ステートメントを使用して下限の既定値が 1 に変更されていない限り、配列の次元の下限は既定値のゼロになります。

 

配列のサブスクリプトは、-32768~32767 の範囲内でなければなりません。固定長配列の場合は、範囲は整数の定数つまり、コンパイル時に認識できる値でなければなりません。

As dataType

配列が保持できるデータの型です。ユーザー定義のデータ型またはクラスの定義中の配列宣言に必要ですが、モジュールレベルまたはプロシージャ内の変数宣言では省略可能です。この節を含める場合、arrayName の後ろにデータ型接尾辞を付けることはできません。dataType は、スカラーデータ型のいずれか、Variant 型、ユーザー定義のデータ型、またはオブジェクト参照のどれでも構いません。

注: C などのプログラミング言語の多くは、配列を宣言します。
int a[5]

配列 a で、a[0] から a[4] までの 5 つの要素を指定します。LotusScript やその他の BASIC タイプの言語では、次のように宣言します。

DIM a(5) as Integer

配列 a で、a[0] から a[5] までの 6 つの要素を指定します。この場合、配列の下限値はゼロで、上限値は 5 です。Option Base ステートメントを使用して、既定値を 1 に変更することもできます。