Manage Learn to apply best practices and optimize your operations.

# Formula Functions

## LotusScript functions

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

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, pkannoglou@netcourrier.com

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
Do
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
Variant
' ==============================
' 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
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) -
1)
' 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\$)
Else
ProperCase = ProperCase & Lcase\$ (c\$)
End If
prevchar\$ = c\$
Next
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
Else
' 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)
Next
' 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
Else
' 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

#### Start the conversation

Send me notifications when other members comment.

## SearchWindowsServer

• ### How to repair Windows Server using Windows SFC and DISM

Administrators can diagnose and treat a buggy server operating system by using the Windows SFC and DISM utilities for image ...

• ### Microsoft's history and future strategy beyond 2020

Microsoft's history over the past 20 years is marked by the pivot from closed software models to support for open source and ...

• ### Learn PowerShell scripting using the PSKoans module

Want to get started with PowerShell automation to manage your Windows systems? Try the PSKoans module to learn as you go through ...

## Search400

• ### iSeries tutorials

Search400.com's tutorials provide in-depth information on the iSeries. Our iSeries tutorials address areas you need to know about...

• ### V6R1 upgrade planning checklist

When upgrading to V6R1, make sure your software will be supported, your programs will function and the correct PTFs have been ...

• ### Connecting multiple iSeries systems through DDM

Working with databases over multiple iSeries systems can be simple when remotely connecting logical partitions with distributed ...

## SearchDataCenter

• ### Top 4 open source automation tools for admins

Open source offerings are an easy way to bring automation into your organization. When selecting software, evaluate the user ...

• ### U.S. facility may have best data center PUE

The data center energy efficiency metric, power usage effectiveness, or PUE, is not improving. But one supercomputer data center ...

• ### Increase efficiency with data center temperature monitoring

Data centers must track multiple temperature components. Organizations can use ASHRAE standards and on-premises hardware for ...

## SearchContentManagement

• ### New capabilities added to Alfresco Governance Services

The updates are intended to secure electronically stored information residing across different locations in light of recent ...

• ### Top 5 Office 365 skills for SharePoint administrators

Microsoft SharePoint administrators need to branch out in their Office 365 skill set to support products tightly integrating with...

• ### Box cloud content management helps simplify digital work

Box currently has three main areas of focus: integration with enterprise applications, content security and collaboration. The ...

Close