As you write Lotusscript code, some function from the formula language may miss
you. Here they are (maybe not all of them).

At first I even rewrote some functions such as StrRight/Left[Back] as they were
not in the language reference of the R5 designer client, and then I found them
reading code from someone else.

Here are some formula function and the non-obvious LS equivalents :

@Trim(Array) : FullTrim(Array)
@Trim(String) : FullTrim(String)
("A" = "B":"A") : (StrGetIndex(L,S)=Null)
@Left("ABC";"B") : STRLeft
@Right("ABC";"B"): STRRight
@LeftBack : STRLeftBack
@RightBack : STRRightBack
Option Base 0

' Released 11 APR 2000,

Public Function Explode (Byval Src As String, Byval Sep As String) As Variant
' Remark : article 10.8, Array functions, tip from Ulrich Krause
' his function explode does the same. I did not examine his algorithm
toroughly so it's up to you to decide which one you prefer
' See @Explode, default separator = ";"
If (Sep = "") Then Sep = ";"
Sep = Left$ (Sep, 1)
Dim tmp() As String
Redim tmp(0)
pos% = 1
nextsep% = Instr (pos%, Src, Sep)
If (nextsep% > 0) Then
tmp(Ubound (tmp)) = Mid$ (Src, pos%, nextsep% - pos%)
Redim Preserve tmp(Ubound (tmp) + 1)
pos% = nextsep% + 1
End If
Loop Until ((nextsep% = 0) Or (pos% > Len (Src)))
tmp(Ubound (tmp)) = Mid$ (Src, pos%, Len(Src) - pos% + 1)
Explode = tmp
End Function

Public Function Implode (Source As Variant, Byval Sep As String) As String
' Remark : Same as above
' See @Implode, default separator = ";"
If (Not (Isarray (Source))) Then
Implode = Cstr (Source)
Exit Function
End If
If (Sep = "") Then Sep = ";"
Sep = Left$ (Sep, 1)
Forall Element In Source
Implode = Implode & Element & Sep
End Forall
If (Right$ (Implode, 1) = Sep) Then
Implode = Left$ (Implode, Len (Implode) - 1)
End If
End Function

Public Function ArrayRemove (Source As Variant, RemoveList As Variant) As
' AD:lotus411:10.8:Ulrich Krause
' ==============================
' Removes from Source any element common with RemoveList
If (Not (Isarray (Source))) Then
ArrayRemove = Source
Exit Function
End If
Dim CleanList() As Variant
Redim CleanList(0)
Forall Element In Source
' Only copy elements not found in RemoveList
If (Isnull (Arraygetindex (RemoveList, Element))) Then
CleanList(Ubound (CleanList)) = Element
Redim Preserve CleanList(Ubound (CleanList) + 1)
End If
End Forall
If (Ubound (CleanList) > 0) Then Redim Preserve CleanList(Ubound (CleanList) -
' Return processed list
ArrayRemove = CleanList
End Function

Public Function ProperCase(Source As String) As String
' See @ProperCase
prevchar$ = ""
For pos% = 1 To Len (Source)
c$ = Mid$ (Source$, pos%, 1)
If ((prevchar$ = " ") Or (prevchar$ = ".") Or _
(prevchar$ = "?") Or (prevchar$ = "!") Or (pos% = 1)) Then
ProperCase = ProperCase & Ucase$ (c$)
ProperCase = ProperCase & Lcase$ (c$)
End If
prevchar$ = c$
End Function

Public Function IsMember (ESLst As Variant, Lst As Variant) As Integer
' See @IsMember
If (Not (Isarray (Lst))) Then
IsMember = False
Exit Function
End If
If (Isarray (ESLst)) Then
' ESLst is an array
Forall Element In ESLst
' If one element can't be found in Lst : False
If (Isnull (Arraygetindex (Lst, Element))) Then
IsMember = False
Exit Function
End If
End Forall
' ESLst is a scalar
If (Isnull (Arraygetindex (Lst, ESLst))) Then
IsMember = False
Exit Function
End If
End If
IsMember = True
End Function

Public Function KeyWords (Source As String, KWL As Variant, Byval Sep As
String) As Variant
' See @KeyWords
' Generate separator list from Sep argument string or default
If (Sep = "") Then Sep = | ",.?!;:[](){}<>|
Dim SepList() As String
Redim SepList(Len(Sep))
For pos% = 1 To Len (Sep)
SepList(pos% - 1) = Mid$ (Sep, pos%, 1)
' Generate keyword list from list or scalar passed as KWL argument
Dim KeyWordList As Variant
If (Isarray (KWL)) Then
' KWL is an array
KeyWordList = KWL
' KWL is a scalar
Redim KeyWordList(0)
KeyWordList(0) = Cstr (KWL)
End If
' Parse the Source and look for the keywords
Dim KeyWordFound() As String
Redim KeyWordFound(0)
word$ = ""
For pos% = 1 To Len

This was first published in November 2000

There are Comments. Add yours.

TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

Disclaimer: Our Tips Exchange is a forum for you to share technical advice and expertise with your peers and to learn from other enterprise IT professionals. TechTarget provides the infrastructure to facilitate this sharing of information. However, we cannot guarantee the accuracy or validity of the material submitted. You agree that your use of the Ask The Expert services and your reliance on any questions, answers, information or other materials received through this Web site is at your own risk.