Command group | Flag affected | Reversible | Execute on client | Platform(s) |
---|---|---|---|---|

Calculations | NO | YES | YES | All |

**Calculate** field-name as calculation

This command assigns a new value to a data field or variable. The form of the command is "Calculate X as Y", where X is a valid data field or variable name and Y is either a valid data field or variable name, value, calculation, or notation. When Calculate is executed the state of the flag is unchanged, unless #F is recalculated by this command.

You can use Calculate in a reversible block. The data field returns to its initial value when the method containing the block of reversible commands finishes.

Warning the Calculate command does not redraw a calculated field so if your field is on a window you must use the Redraw command or the $redraw() method after the Calculate command to reflect the change.

Mathematical expressions are evaluated using the operator precedence so that in the absence of brackets, * and / operations are evaluated before + and -. The full ordering from highest to lowest precedence is:

unary minus

* and /

- and -

>, <, >=, <=, <>, =

& and |

For example, if you execute the command "Calculate lVar1 as 10-2*3" the calculation part is evaluated as 10-(2*3)

`# set the local variable lVar1 equal to the contents of lVar2`

Calculate lVar1 as lVar2

# set the local variable lPrice to 10.99 and lQty to 2

Calculate lPrice as 10.99

Calculate lQty as 2

# calculate the local variable lTotal as lPrice multiplied by lQty

Calculate lTotal as lPrice*lQty

# you can also operate on variables using notation, for example, calculate the

# local list variable lClassList as a list of all classes in the current library

Calculate lClassList as $clib.$classes.$makelist($ref.$name)

# however some operations are better performed using the Do command, for example

# bring the window instance wMywindow to the front

Do $iwindows.wMywindow.$bringtofront()