Formula Language
The
Formula language is a scripting language used by
Lotus Notes.
It is often referred to as
@Formula language (pronounced
at-formula) because many language elements start with the @-character.
The Formula language is not a full programming language: it lacks looping constructs and there is only one function for conditional execution.
However, Formula language is very good at the manipulation of strings and lists (arrays) of strings.
Note: in version 6 of Lotus Notes the Formula language has been extended to include looping and additional conditional statements.
The Formula language has two parts:
- @Functions for calculations and simple logic
- @Commands for performing actions in the user interface
@Functions can be used in several places throughout Lotus Notes. The most important uses are:
- to select documents to show to the user in a view (a kind of index) or to select documents for further processing. In this case, the formula will evaluate to a 'true' (selected) or 'false' value (not selected) for each document.
- to provide default values for fields, to transform the data entered by the user (like stripping off redundant spaces) and to validate this data.
- to get a list of values from a Notes database or even from a relational database (using ODBC). This may be used to provide a user with a list of values to choose from.
- to process a set of documents. The formula is placed in an agent, a program or macro that can be started by a user or by the Notes server according to a schedule. When the agent is triggered, the formula executes for each selected document (this a a very limited form of a loop). This is an efficient way of changing lots of documents, if the logic is not too complicated. In case of complicated changes, LotusScript is used.
@Commands are like menu commands: they perform actions in the Lotus Notes client. Examples of actions are:
- opening a Notes database
- creating an e-mail
- putting the cursor in a specific data-entry field
- closing a window
- starting an agent
@Commands are mainly used in buttons and the like. It is possible to combine them with @Functions, for example the command only executes if a field contains a predefined value.