Scalar 및 Array 변수

대부분의 경우 변수를 선언한 후에는 단일 값만 지정합니다. 단일 값을 포함하는 변수는 스칼라 변수입니다. 다른 경우에는 단일 변수에 2개 이상의 관련 값을 지정하는 것이 편리합니다. 일련의 값을 포함할 수 있는 변수를 생성할 수 있습니다. 이를 배열 변수라고 합니다. 배열 변수 선언은 변수 이름 뒤에 괄호 ( )를 사용한다는 점을 제외하고 배열 변수 및 스칼라 변수는 동일한 방식으로 선언됩니다.

다음 예에서는 11개의 요소를 포함하는 1차원 배열이 선언됩니다.

Dim A(10)

괄호 안에 표시된 숫자는 10이지만 BSL의 모든 배열은 0부터 시작합니다. 따라서 이 배열에는 11개의 요소가 포함됩니다. 0부터 시작하는 배열에서 배열 요소의 수는 항상 괄호에 1을 더한 값으로 표시됩니다. 이러한 종류의 배열을 고정 크기 배열이라고 합니다.

배열에 인덱스를 사용하여 배열의 각 요소에 데이터를 지정할 수 있습니다. 0부터 10까지 배열의 요소에 데이터를 다음과 같이 지정할 수 있습니다.

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

마찬가지로 인덱스를 사용하여 원하는 배열 요소에 데이터를 검색할 수 있습니다.

예:

SomeVariable = A(8)

배열은 단일 차원으로 제한되지 않습니다. 괄호 안의 배열 크기 숫자를 쉼표로 구분하여 여러 차원을 선언할 수 있습니다. 다음 예에서 MyTable 변수는 6개 행과 11개 열로 구성된 2차원 배열입니다.

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)

동적 배열의 크기를 조정할 수 있는 횟수에는 제한이 없지만 배열을 작게 만들면 제거된 요소의 데이터가 손실됩니다.

다음 예에서는 Scalar 변수 및 배열 변수의 사용을 보여 줍니다.

예 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).