Help and Examples

To create a new calculation you can copy and modify an existing calculation. As an example we will examine how this source code will multiply two numbers for the user:

Input
    Heading 'Cost of Buying Oranges'  # A title for the Input form.
    NumberIn 'Number of oranges' n    # A number input box.
    NumberIn 'Price of one orange' p  # Another input box.
    CalcButton 'Total Price'          # A button to perform the calculation.

t := n * p                            # The calculation formula.

Output
    Heading 'Total Price of Oranges'  # A title for the calculation output.
    LineOut 'Number' n                # The results we want to display.
    LineOut 'Price' p
    LineOut 'Total Price' t

The Input list at the beginning of the source code creates the form to ask for the things we need from the user before we do the calculation. Heading puts a title above the form so the user understands the subject of the calculation. NumberIn displays a box where they can type a number. CalcButton shows a button labelled with some text to say what will be calculated when they press the button. Notice that NumberIn puts the number the user types in the box into the variable. In this example the variables are named n and p. We can use these variables in the calculation.

When the user clicks the CalcButton the calculation will happen and the Output will be displayed. In this example we multiply the two variables to get the total price. The total price is put in a new variable named t. The variables can be given longer names like total, price and oranges if this makes the calculation easier to understand. The calculation can have several steps if necessary. The operators available are the usual ones like * for multiply, / to divide, + to add, - to subtract and ^ to raise to a power. You can use brackets ( and ) to make it clear which parts of the calculation go together.

After the calculation has completed the Output will be displayed for the user. There is Heading for the title and LineOut which displays the numbers calculated.

Operators

Arithmetic

+ add
- subtract and negative
* multiply
/ divide
^ exponent (power)

Comparison

These operators return TRUE = 1 or FALSE = 0.

= equal
> greater than
< less than
>= greater than or equal
<= less than or equal
<> not equal

Operator Precedence

Operators at the top of this list, with higher precedence, are calculated first. For example the expression 2 + 3 * 4 is the same as 2 + (3 * 4) . Brackets can be used in expressions when a different order is required.

- negative
^ exponent
* / multiply and divide
+ - add and subtract
= > < >= <= <> comparison

Functions

Logical

IF (logical, number, number) Returns the first number if true and the second if false.
AND (logical, logical)
OR (logical, logical)
NOT (logical)
ISBLANK (number)

Math

LN (number) Natural logarithm. Log to the base e.
LOG (number, base) Logarithm to the specified base.
LOG10 (number) Logarithm to base 10.
EXP (number) e raised to the power of the given number.
POWER (number, power) Number raised to the power. Equivalent to number ^ power.
SQRT (number) Square root of the number.
COS (number) Cosine of the angle which is in radians.
SIN (number) Sine of the angle which is in radians.
TAN (number) Tangent of the angle which is in radians.
ACOS (number) Arccosine of the number. Returned in radians.
ASIN (number) Arcsine of the number. Retured in radians.
ATAN (number) Arctangent of the number. Returned in radians.
DEGREES (number) Converts the angle in radians to degrees.
RADIANS (number) Converts the angle in degrees to radians.
ROUND (number) Rounds the number to the nearest integer.
MROUND (number, multiple) Rounds the number to the nearest multiple of the given number. e.g. MROUND(3.16, 0.1) gives 3.2
FLOOR (number, multiple) Rounds towards zero to the next multiple of the given number. e.g. FLOOR(3.116, 0.01) gives 3.11
CEILING (number, multiple) Rounds away from zero to the next multiple of the given number. e.g. CEILING(2.3, 2) gives 4
ABS (number) Returns a positive version of the number. Absolute.
MOD (number, number) Returns the remainder after dividing the first number by the second.
RAND () Returns a random number which can be zero or any number above zero but less than 1.
RANDBETWEEN (bottom, top) Given the values of the smallest and largest integers it is allowed to produce. Returns a random integer in this range.

Statistical

MIN (number, number) Returns the smallest number.
MAX (number, number) Returns the largest number.

Another Example

A more elaborate calculation example:

Input
    Heading 'Floor Area and Cost'
    NumberIn 'Length ft' l
    NumberIn 'Width ft' w
    Menu 'Carpet Quality' costsqft  # Display options in a menu. Title and variable.
       'Cheap' 5              # Text for the menu option and a number to return.
       'Normal' 10 Selected   # Select this option as the default.
       'Expensive' 15
    RadioButtons 'Fitting' f  # Like a menu but displayed as radio buttons.
       'Professional' 75 Selected
       'Do It Yourself' 0
    NumberIn 'Delivery Charge' d 35  # Put a default number in the box.
    CalcButton 'Floor Area and Cost'

area := l * w
totalcost := area * costsqft + f + d

Output
    Heading 'Floor Area and Cost'
    LineOut 'Length ft' l
    LineOut 'Width ft' w
    LineOut 'Area in Square Feet' area
    LineOut 'Total Cost' totalcost