[Automation/All] vbscript에서 배열(array) 변수 다루기

Version 2

    Automation에서 자주 활용되는 vbscript 언어는 배열변수의 크기에 변화를 주면서 정보를 저장시킬 수 있습니다.

     

    회로도나 PCB 데이터로부터 부품정보를 하나씩 수집하거나, net 정보, trace 정보를 수집하여 조건에 맞는 것들만 filtering 시키면서 보관하려 할 때에는 특히 몇 개가 수집될 지 미리 예측/결정할 수 없으므로 배열변수의 크기를 늘려가면서 정보를 저장하게 됩니다.

     

    아래의 예제는 두 개의 배열변수 -MySquare, MySquareRoot-를 배열변수로 지정한 후, 크기를 하나씩 늘려가면서 1~10까지의 제곱과 제곱근의 값을 각각 보관하였다가 화면에 표시해 줍니다.

     

    배열변수의 개별 원소에 접근할 때 사용하는 index(괄호 안에 쓰이는 숫자)는 첫 번째 원소가 "0", 두 번째 원소가 "1" 인 점을 주의해야 합니다.

    배열변수의 크기에 변화를 줄 때에 사용하는 ReDim Preserve 구문에서도, 배열의 크기는 0번째 원소부터 부터 index값까지를 의미하므로, '0'으로 지정하면 하나의 원소를 가진 배열, '1'로 지정하면 두 개의 원소를 가진 배열을 의미합니다.

     

    이 예제를 기본으로 변화를 주어 보면서 결과를 관찰해 지면 금방 익숙해질 수 있습니다.

     

     

    Dim MySquare()
    Dim MySquareRoot()
    Dim MySize

    ReDim MySquare(-1) ' Initialize as 0 size array
    ReDim MySquareRoot(-1) ' Initialize as 0 size array

    MySize = 0

    For i=1 To 10
     
      ReDim Preserve MySquare(MySize) ' Array with "0" as given size has a "single" element that can be retrieved by array(0)
      ReDim Preserve MySquareRoot(MySize)
     
      MySquare(MySize) = i * i
      MySquareRoot(MySize) = Round(Sqr(i), 3)
     
      MySize = MySize + 1

    Next

    Dim MyText
    MyText = ""

    For i=1 To MySize
      MyText = MyText & i & " * " & i    & " = " & MySquare(i-1) & "  /  " & _
                       "sqrt(" & i & ")" & " = " & MySquareRoot(i-1) & vbCrLf
    Next

    MsgBox MyText

     

    vbscript에서 사용되는 구문들은 Google 등 포털 사이트에서 "vbscript", "asp" 등의 키워드와 함께 검색하여 자세한 설명을 찾아볼 수 있습니다.

     

    그리고, Microsoft에서 제공하는 MSDN에서도 vbscript language reference 페이지를 통해 매우 다양한 vbscript 기법을 배울 수 있습니다.

    http://msdn.microsoft.com/en-us/library/d1wf56tt(v=vs.84).aspx