スカラー変数および配列変数

ほとんどの場合、変数を宣言した後は、単一の値のみを割り当てます。単一の値を含む変数はスカラー変数です。場合によっては、1つの変数に複数の関連値を割り当てると便利です。一連の値を含むことができる変数を作成できます。これは配列変数と呼ばれます。配列変数の宣言で変数名の後にカッコ( )が使用される点を除き、配列変数とスカラー変数は同じ方法で宣言されます。

次の例では、11個の要素を含む一次元配列が宣言されます:

Dim A(10)

カッコ内に表示される数値は10ですが、BSL内のすべての配列はゼロベースです。したがって、この配列には11個の要素が含まれます。ゼロベースの配列では、配列要素の数は常にカッコで囲まれた数に1を加えた数になります。このような配列は、固定サイズの配列と呼ばれます。

配列への索引を使用して、配列の各要素にデータを割り当てることができます。ゼロで始まり10で終わる場合、データは次のように配列の要素に割り当てることができます:

     A(0) = 256
        A(1) = 324
        A(2) = 100
         . . .
        A(10) = 55

同様に、索引を使用して任意の要素から必要な配列要素にデータを取得できます。

例:

SomeVariable = A(8)

配列は一次元に限定されません。複数の次元を宣言するには、カッコ内の配列のサイズ値をカンマで区切ります。次の例では、MyTable変数は、6行と11列で構成される二次元配列です:

Dim MyTable(5,10)

二次元配列では、最初の数値は常に行数で、2番目の数値は列数です。

スクリプトの実行中にサイズが変更された配列を宣言することもできます。これは動的配列と呼ばれます。配列は、Dim文またはReDim文を使用して最初にプロシージャ内で宣言されます。ただし、動的配列の場合、カッコ内にサイズや次元の数は指定されません。

例:

Dim MyArray()
ReDim AnotherArray() ' Illegal as no dimension specified
ReDim AnotherArray(3)

動的配列を使用するには、後でReDimを使用して、次元の数と各次元のサイズを決定する必要があります。次の例では、ReDimは動的配列の初期サイズを25に設定します。後続のReDim文では、配列のサイズが30に変更されますが、Preserveキーワードを使用して、サイズ変更が発生したときの配列の内容を保持します。

ReDim MyArray(25)
 . . . 
ReDim Preserve MyArray(30)

動的配列のサイズを変更できる回数に制限はありませんが、配列を小さくすると、削除された要素内のデータが失われます。

次の例は、スカラー変数と配列変数の使用方法を示しています:

例1:

Dim B
B = 200   ' Assigns the value 200 to the variable B.

例2:

Dim A(3)   ' Declares a single-dimension array with 4 elements 0 to 3 indexes.
' Assigning values to each element of the array.
A(0) = 256
A(1) = 324
A(2) = 100
' Retrieving a value from the array.
Dim SomeVariable
SomeVariable = A(1)   ' Retrieves the value at index 1.

例3:

Dim MyArray()   ' Declares a dynamic array.
ReDim MyArray(25)   ' Sets the initial size of the dynamic array to 25 elements.
' Assigning values to the dynamic array.
MyArray(0) = "First"
MyArray(25) = "Last"
' Resizing the dynamic array and preserving contents.
ReDim Preserve MyArray(30)   ' Resizes the array to 30 elements and preserves existing data.

例4:

Dim AnotherArray()
ReDim AnotherArray(10)   ' Initial size of 10 elements.
' Assigning values to the array.
AnotherArray(0) = "Alpha"
AnotherArray(10) = "Omega"

' Resizing the array multiple times.
ReDim Preserve AnotherArray(20)
AnotherArray(20) = "NewElement"
ReDim Preserve AnotherArray(5)   ' Reduces the size of the array (data beyond index 5 is lost).