Search code examples
lotusscriptlotus

Associative arrays in LotusScript


Is there any way to implement associative array in LotusScript?
If yes, post a little demo code please.
Many thanks!


Solution

  • Associative arrays are called Lists in LotusScript. Here's the IBM page on lists in LotusScript.

    Sample from that page:

    ' Declare a list to hold employee IDs.
    ' The list tags will be the names of the employees.
    Dim empList List As Double
    ' Make absolutely sure empList is Double.
    If TypeName(empList) <> "DOUBLE LIST" Then
      Print "Warning: empList is " & TypeName(empList)
    End If
    If DataType(empList) <> 2053 Then
      Print "Warning: empList is " & CStr(DataType(empList))
      ' We expected 2053 (that is, 2048 + 5).
    End If
    ' Declare a String variable for user name.
    Dim ans As String
    ' Declare a Double variable for user ID.
    Dim yourID As Double
    ' Declare an Integer variable to serve as a flag.
    Dim found As Boolean
    ' Create some list elements and assign them values.
    empList("Maria Jones") = 12345
    empList("Roman Minsky") = 23456
    empList("Joe Smith") = 34567
    empList("Sal Piccio") = 91234
    ' Ask the user to enter the name to be removed from the
    ' list of employees who have been assigned parking spaces.
    ans$ = InputBox$("Which employee no longer needs a space?")
    ' Check to see if the employee's name appears as a list tag
    ' in the list. If not, display a message and stop. Otherwise,
    ' validate the employee's ID. If everything checks out,
    ' remove the employee item from the parking list. 
    If IsElement(empList(ans$)) = True then
        Print ans$ & "  is a valid employee name."
        yourID# = CDbl(InputBox$("What's " & ans$ & "'s ID?"))
        ' The following ForAll block does two things:
        ' it checks to see if yourID# is a valid ID and,
        ' if so, if it matches the ID for the employee
        ' whose name is ans$. If so, that element is removed
        ' (erased) from the list. The found flag is initially
        ' FALSE (0). If yourID# is a valid ID, found is set to
        ' TRUE (-1). The variable empID is the reference variable
        ' in the ForAll loop.
        found = FALSE
        ForAll empID In empList
            If empID = yourID# then
               found = TRUE
               If ListTag(empID) = ans$ then
                  Erase empList(ans$)
                  ' Verify the removal of the list element.
                  If  IsElement(empList(ans$)) = FALSE then
                    Print ans$ & " is no longer on the list."
                 End If
               Else
                  Print "Valid ID but wrong employee."
               End If
               ' No need to look further for yourID#,
               ' so get out of the ForAll loop.
               Exit ForAll
            End If
         End ForAll
         If found = False then
            Print "No such employee ID."
         End If
    Else
       Print "No such employee."
    End if