Skip to Content

Local variables


Local variables in Harmony are the type of variable that is most limited in scope. They are declared within a script and can be accessed only within that script. For this reason you should use a local variable only if the variable is needed temporarily in the current script.


Do not use a local variable if you want the variable to persist for use in other parts of the project. For use outside the current script, use a global variable or project variable.

Create a local variable

Because a local variable can't have a value before it is defined, you must define it before it is used.

In the system, a local variable is recognized by the absence of the dollar sign $ that normally precedes the name of a global variable. Because the $ is absent, a local variable is not "seen" globally. While a global variable can be used to pass a value among different scripts, the local variable stops being visible to the system after execution of the script that uses it.

To set and use a local variable, simply leave off the $. A local variable cannot be set or retrieved with Set and Get functions.

Local variable names

Local variable names can be composed from these characters: letters (a-z, A-Z), numbers (0-9), and underscores. Other characters, such as periods or hyphens, are not allowed and may cause issues.


In this example, now is a local variable and is only available in this script (that is, before the terminating </trans> tag). In contrast, $tomorrow is a global variable that is available until the end of the current operation chain:

now = Now();
WriteToOperationLog("The time is " + now);
$tomorrow = now + 60*60*24;

Because the scope of local variables is within the script, the naming of the variable can be simple. For example, local variables may be named now, return, myVariable, etc.

This example retrieves the value of a node, and if that value is null, sets it to the string "Not Set", and then returns the value:

value = root$transaction.request$body$Calculate$input.Operand1$;
    value = "Not Set"

This example retrieves the value of three nodes, adds the higher of the first two values to the third value, and then returns the third value:

value1 = root$transaction.request$body$Calculate$input.Operand1$;
value2 = root$transaction.request$body$Calculate$input.Operand2$;
value3 = root$transaction.request$body$Calculate$input.Operand3$;

if(value1 > value2,
    value3 += value1
  , //else
    value3 += value2