LOTUSSCRIPT LANGUAGE


Using properties
Properties are good for manipulating protected variables, that is, Private members of a user-defined class to which the application has no direct access.

For more information see "User-defined Data Types and Classes."

Example 1

In the following example, the sub KeepGoing uses the property theCube# to manipulate three variables (anInt%, aDouble#, and bigNum#) that are not referred to directly by the application.

%Include "LSCONST.LSS"

Dim anInt As Integer

Dim aDouble As Double

Dim bigNum As Double

Property Set theCube As Double

   anInt% = theCube#

End Property

Property Get theCube As Double

   aDouble# = anInt% ^ 3

   If aDouble# > bigNum# Then

       bigNum# = aDouble#

  End If

  theCube# = anInt%

End Property

Sub KeepGoing

  Dim goAgain As Boolean

  Dim msg As String

  Dim msgSet As Integer

  Dim more As Integer

  goAgain = TRUE

  msg$ = "Want to go again?"

  msgSet% = MB_YESNO + MB_ICONQUESTION

 ' Prompt the user to enter a number; assign that number to

 ' the property theCube# (by executing Property Set theCube#);

 ' calculate the cube of that number (by executing

 ' Property Get theCube#), assign it to the variable aDouble#,

 ' and compare it to the current value of bigNum#, resetting

 ' the latter if aDouble# is greater. Prompt the user to

 ' repeat the process or quit.

  While goAgain = True

    ' Execute Property Set theCube# by assigning it

    ' a value. This assigns a value to anInt%.

    theCube# = CInt(InputBox$("Enter an integer:"))

    ' Execute Property Get theCube# by including theCube#

    ' in a Print statement. This assigns a value to aDouble#,

    ' may assign a value to bigNum#, and returns the current

    ' value of anInt%.

    Print theCube# & " cubed = " & aDouble# & "."

    Print bigNum# & " is the biggest cube so far."

    ' See if the user would like to do all this again or quit.

    more% = MessageBox(msg$, msgSet%)

      If more% = IDNO Then

         goAgain = FALSE

      End If

  Wend

  Print "All Done."

End Sub

Call KeepGoing

' Output: The user types 3 and selects Yes, then

' 4 and selects Yes, then 2 and selects No.

' 3 cubed = 27.

' 27 is the biggest cube so far.

' 4 cubed = 64.

' 64 is the biggest cube so far.

' 2 cubed = 8.

' 64 is the biggest cube so far.

' All Done.

Example 2

You can perform the same operations using a sub and a function instead of a property.

%Include "LSCONST.LSS"

Dim anInt As Integer

Dim aDouble As Double

Dim bigNum As Double

Sub SetTheCube

   anInt% = CInt(InputBox$("Enter an integer:"))

End Sub

Function GetTheCube(anInt As Integer) As Double

   aDouble# = anInt% ^ 3

   If aDouble# > bigNum# Then

       bigNum# = aDouble#

  End If

  GetTheCube# = anInt%

End Function

Sub KeepGoing

  Dim goAgain As Boolean

  Dim msg As String

  Dim msgSet As Integer

  Dim more As Integer

  goAgain = TRUE

  msg$ = "Want to go again?"

  msgSet% = MB_YESNO + MB_ICONQUESTION

 

  While goAgain = True  

    Call SetTheCube

    Print GetTheCube#(anInt%) & " cubed = " & aDouble# & "."

    Print bigNum# & " is the biggest cube so far."

    ' See if the user would like to do all this again or quit.

    more% = MessageBox(msg$, msgSet%)

      If more% = IDNO Then

         goAgain = FALSE

      End If

  Wend

  Print "All Done."

End Sub

Call KeepGoing

' Output: The user types 3 and selects Yes, then

'         4 and selects Yes, then 2 and selects No.

' 3 cubed = 27.

' 27 is the biggest cube so far.

' 4 cubed = 64.

' 64 is the biggest cube so far.

' 2 cubed = 8.

' 64 is the biggest cube so far.

' All Done.

See Also