Difference between revisions of "UM:NetXMS Scripting Language (NXSL)"

no edit summary
Line 130: Line 130:
}
}
</syntaxhighlight>
</syntaxhighlight>


= Functions =
= Functions =
A function is a named code block that is generally intended to process specified input values into an output value, although this is not always the case. For example, the [[NXSL:trace|trace]] function takes variables and static text and prints the values into server log. Like many languages, NXSL provides for user-defined functions. These may be located anywhere in the main program or loaded in from other scripts via the use keywords.
To define a function, you can use the following form:
'''sub''' ''NAME'' '''(''' ''ARGUMENTS'' ''')''' '''BLOCK'''
where ''NAME'' is any valid identifier, ''ARGUMENTS'' is optional list of argument names, and ''BLOCK'' is code block.
To call a function you would use the following form:
''NAME'' '''(''' ''LIST'' ''')'''
where ''NAME'' is identifier used in function definition, and ''LIST'' is an optional list of expressions passed as function arguments.
To give a quick example of a simple subroutine:
<syntaxhighlight lang="c">
sub message()
{
  println "Hello!";
}
</syntaxhighlight>
== Function Arguments ==
The first argument you pass to the function is available within the function as $1, the second argument is $2, and so on. For example, this simple function adds two numbers and prints the result:
<syntaxhighlight lang="c">
sub add()
{
  result = $1 + $2;
  println "The result was: " . result;
}
</syntaxhighlight>
To call the subroutine and get a result:
<syntaxhighlight lang="c">
add(1, 2);
</syntaxhighlight>
If you want named arguments, list of aliases for $1, $2, etc. can be provided in function declaration inside the brackets:
<syntaxhighlight lang="c">
sub add(numberA, numberB)
{
  result = numberA + numberB;
  println "The result was: " . result;
}
</syntaxhighlight>
If parameter was not provided at function call, value of appropriate variable will be '''null'''.
== Return Values from a Function ==
You can return a value from a function using the '''return''' keyword:
<syntaxhighlight lang="c">
sub pct(value, total)
{
  return value / total * 100.0;
}
</syntaxhighlight>
When called, return immediately terminates the current function and returns the value to the caller. If you don't specify a value in '''return''' statement or function ends implicitly by reaching end of function's block, then the return value is '''null'''.




Line 138: Line 203:


A ''key'' must be a non-negative integer. When an array is created, its size is not specified and its map can have empty spots in it. For example, an array can have a element with a ''0'' key and an element with ''4'' key and no keys in-between. Attempting to access an array key which has not been defined is the same as accessing any other undefined variable: the result will be <tt>NULL</tt>.
A ''key'' must be a non-negative integer. When an array is created, its size is not specified and its map can have empty spots in it. For example, an array can have a element with a ''0'' key and an element with ''4'' key and no keys in-between. Attempting to access an array key which has not been defined is the same as accessing any other undefined variable: the result will be <tt>NULL</tt>.


= Operators =
= Operators =
683

edits