You can download offline version here here.

Introduction

In many parts of the system, fine tuning can be done by using NetXMS built-in scripting language called NXSL (stands for NetXMS Scripting Language). NXSL was designed specifically to be used as embedded scripting language within NetXMS, and because of this has some specific features and limitations. Most notable is very limited access to data outside script boundaries – for example, from NXSL script you cannot access files on server, nor call external programs, nor even access data of the node object other than script is running for without explicit permission. NXSL is interpreted language – scripts first compiled into internal representation (similar to byte code in Java), which than executed inside NXSL VM.

Script security

Because NXSL provides functions for searching objects, and because all scripts are executed on management server, user with write access to only one node can potentially acquire information about nodes to which he normally does not have access. For example, without additional security checks user with write access to node A and no access to node B can create transformation script for DCI on node A and use FindNodeObject function to access node B and get information about it, thus breaking security settings.

To prevent such scenario, all NXSL functions capable of accessing NetXMS objects requires "current node" object to be provided. Reference to object being searched will only be returned if node object supplied as "current node" is in trusted nodes list of target object. For example, if variable $node in script refers to NODE1, and FindNodeObject($node, "NODE2") called, NODE1 must be added to list of trusted nodes for NODE2. In most places (transformation script, event processing policy, etc.) predefined variable $node exists, which refers to node object on behalf of which script is being executed. It will be event source for event processing policy script, DCI owner for transformation script, and so on.

For environments where such strict security checks are not required (for example, all users have read access to all nodes), they can be disabled to simplify configuration. Enforcement of trusted nodes checking controlled by server’s configuration variable CheckTrustedNodes. By default it is set to 1 and check of trusted nodes is enforced. To disable it, server’s configuration variable CheckTrustedNodes must be set to 0. The server restart is required to make this change effective.

Tutorial

Built-in Types

The following sections describe the standard types that are built into the interpreter.

The principal built-in types are numerics, sequences, mappings, classes, and instances.

Truth Value Testing

Any object can be tested for truth value, for use in an if or while condition or as operand of the Boolean operations below. The following values are considered false:

None

False

zero of any numeric type, for example, 0, 0.0, 0j.

any empty sequence, for example, '', (), [].

any empty mapping, for example, {}.

instances of user-defined classes, if the class defines a bool() or len() method, when that method returns the integer zero or bool value False. [1]

All other values are considered true — so objects of many types are always true.

Operations and built-in functions that have a Boolean result always return 0 or False for false and 1 or True for true, unless otherwise stated. (Important exception: the Boolean operations or and and always return one of their operands.)

Function Reference

String functions

ArrayToString()

ArrayToString() => void

Parameters
Example

chr()

chr() => void

Parameters
Example

d2x()

d2x(number, padding=0) => String

Convert decimal devValue to hex string with optional left-padding with zeroes.

Parameters

number

Input value.

padding

Optional argument specifying target string length.

Return

Hex string.

Example
>>> d2x(1234)
4D2
>>> d2x(1234, 8)
000004D2

format()

format() => void

Parameters
Example

index()

index() => void

Parameters
Example

inList()

inList(string, separator, token) => Boolean

Split input string by separator into elements and compare each element with token.

Parameters

string

Input string.

separator

Elements separator.

token

Pattern to compare with.

Return

True if token is found in input string.

Example
>>> inList("1,2,3", ",", "1")
true
>>> inList("ab|cd|ef", "|", "test")
false

left()

left() => void

Parameters
Example

length()

length() => void

Parameters
Example

lower()

lower() => void

Parameters
Example

ltrim()

ltrim() => void

Parameters
Example

ord()

ord() => void

Parameters
Example

right()

right() => void

Parameters
Example

rindex()

rindex() => void

Parameters
Example

rtrim()

rtrim() => void

Parameters
Example

SplitString()

SplitString() => void

Parameters
Example

substr()

substr() => void

Parameters
Example

trim()

trim() => void

Parameters
Example

upper()

upper() => void

Parameters
Example

x2d()

x2d(hexValue) => Integer

Convert hexadecimal string to decimal value.

Parameters

hexValue

Input value.

Return

Converted value.

Example
>>> x2d("4D2")
1234

Math functions

abs()

abs(number) => Number

Returns the absolute value of the number.

Parameters

number

Input value.

Return

Absolue value of the input.

Example
>>> abs(12.3)
12.3
>>> abs(-0.307)
0.307

acos()

acos() => void

Parameters
Example

asin()

asin() => void

Parameters
Example

ceil()

ceil(input) => Integer

Round up value.

Parameters

input

Input value.

Return

Value round up to nearest integer.

Example
>>> ceil(2.3)
3.0
>>> ceil(3.8)
4.0
>>> ceil(-2.3)
-2.0
>>> ceil(-3.8)
-3.0

cos()

cos() => void

Parameters
Example

cosh()

cosh() => void

Parameters
Example

exp()

exp(input) => Float

Computes e**x, the base-e exponential.

Parameters

input

Input number.

Example
>>> exp(2)
7.3890561

floor()

floor(input) => Integer

Round down value.

Parameters

input

Input value.

Return

Value round down to nearest integer.

Example
>>> floor(2.3)
2
>>> floor(3.8)
3
>>> floor(-2.3)
-3
>>> floor(-3.8)
-4

log()

log() => void

Parameters
Example

log10()

log10() => void

Parameters
Example

max()

max() => void

Parameters
Example

min()

min() => void

Parameters
Example

pow()

pow() => void

Parameters
Example

round()

round() => void

Parameters
Example

sin()

sin() => void

Parameters
Example

sinh()

sinh() => void

Parameters
Example

tan()

tan() => void

Parameters
Example

tanh()

tanh() => void

Parameters
Example

gmtime()

gmtime() => void

Parameters
Example

localtime()

localtime() => void

Parameters
Example

mktime()

mktime() => void

Parameters
Example

strftime()

strftime() => void

Parameters
Example

time()

time() => void

Parameters
Example

Object functions

CreateContainer()

CreateContainer() => void

AF_ENABLE_NXSL_CONTAINER_FUNCS

Parameters
Example

CreateNode()

CreateNode() => void

AF_ENABLE_NXSL_CONTAINER_FUNCS

Parameters
Example

RenameObject()

RenameObject() => void

Parameters
Example

DeleteObject()

DeleteObject() => void

AF_ENABLE_NXSL_CONTAINER_FUNCS

Parameters
Example

ManageObject()

ManageObject() => void

Parameters
Example

UnmanageObject()

UnmanageObject() => void

Parameters
Example

Finding objects

GetAllNodes()

GetAllNodes() => void

Parameters
Example

FindObject()

FindObject() => void

Parameters
Example

FindNodeObject()

FindNodeObject(currentNode, key) => Node

Look up Node object by the key (either string name or integer id) or return null if not found.

Unless trusted node validation is disabled, currentNode should be set to current context node (predefined variable $node in most cases). If validation is disabled, currentNode is ignored and can be set to null.

Parameters

currentNode

Lookup context or null if trusted nodes validation is disabled.

key

Object name of id.

Return

Instance of Node object or null if not found or not accessible.

Example
>>> FindNodeObject($node, "server.netxms.org")
object
>>> FindNodeObject(null, 12)
object
>>> FindNodeObject($node, "bad_node_name")
NULL

GetObjectParents()

GetObjectParents(object) => Array

Return array of object parents.

Parameters

object

Target object.

Return

Array of NetObj instances.

Example

GetNodeParents()

GetNodeParents() => void

Parameters
Example

GetObjectChildren()

GetObjectChildren(object) => Array

Return array of child objects for the object.

Parameters

object

Target object.

Return

Array of NetObj instances.

Example

GetNodeTemplates()

GetNodeTemplates() => void

Parameters
Example

Binding objects to containers

BindObject()

BindObject() => void

AF_ENABLE_NXSL_CONTAINER_FUNCS

Parameters
Example

UnbindObject()

UnbindObject() => void

AF_ENABLE_NXSL_CONTAINER_FUNCS

Parameters
Example

Interfaces

GetInterfaceName()

GetInterfaceName() => void

Parameters
Example

GetInterfaceObject()

GetInterfaceObject() => void

Parameters
Example

GetNodeInterfaces()

GetNodeInterfaces() => void

Parameters
Example

SetInterfaceExpectedState()

SetInterfaceExpectedState() => void

Parameters
Example

Custom attributes

GetCustomAttribute()

GetCustomAttribute(object, name) => String

Lookup custom attribute of the object.

Alternatively, attributes can be accessed as instance attribues (with , attribute should exist) or by using attribute@object notion (which will return null instead of runtime error if attribue is missing).

Parameters

object

Object to query.

name

Name of the custom attribute.

Return

String value of the custom attribute of null if not found.

Example
>>> GetCustomAttribute($node, "test")
testvalue
>>> $node->test
testvalue
>>> test@$node
testvalue

SetCustomAttribute()

SetCustomAttribute(object, name, value) => void

Set custom attribute name to value on object.

Parameters

object

Target object.

name

Custom attribute name.

value

Custom attribute value.

Example
>>> SetCustomAttribute($node, "test", "test value")
>>> test@$node
test value

DeleteCustomAttribute()

DeleteCustomAttribute(object, name) => void

Delete custom attribute name from object.

Parameters

object

Target object.

name

Name of the custom attribute.

Example

Maintenance mode

EnterMaintenance()

EnterMaintenance() => void

Parameters
Example

LeaveMaintenance()

LeaveMaintenance() => void

Parameters
Example

Data Collection

CreateDCI()

CreateDCI(node, origin, name, description, dataType, pollingInterval, retentionTime) => DCI

Create new data collection item on node, return DCI object instance of null if failed.

Parameters

node

Node object instance (e.g. $node), where DCI should be created.

origin

data origin, supported values:

  • "internal"

  • "agent"

  • "snmp"

  • "cpsnmp"

  • "push"

  • "winperf"

  • "smclp"

  • "script"

  • "ssh"

  • "mqtt"

  • "driver"

name

name of the metric (e.g. "Agent.Version")

description

human readable description.

dataType

type of the collected data, supported values:

  • "int32"

  • "uint32"

  • "int64"

  • "uint64"

  • "string"

  • "float".

pollingInterval

polling interval in seconds or 0 for server-default value.

retentionTime

retention time in days or 0 for server-default value.

Return

Instance of newly created DCI of null if failed.

Example
>>> d = CreateDCI($node, "agent", "Agent.Version", "Agent Version", "string", 0, 0);
>>> println(d->id);
145

FindAllDCIs()

FindAllDCIs(node, nameFilter, descriptionFilter) => Array

Find all DCI on the node matching nameFilter and descriptionFilter. Filter can contain glob symbols "?" and "*". If filter is null, it’s ignored.

Parameters

node

Node object instance (e.g. $node)

nameFilter

GLOB for mastching DCI name or null if name should be ignored.

descriptionFilter

GLOB for mastching DCI description or null if description should be ignored.

Return

Array of DCI.

Example
>>> list = FindAllDCIs($node, "Server*", "*MAIN*");
>>> foreach (row : list) {
>>>         println(row->id . ": " . row->description . " (" . row->name . ")");
>>> }
91: Server thread pool MAIN: usage (Server.ThreadPool.Usage(MAIN))
92: Server thread pool MAIN: normalized load average (1 minute) (Server.ThreadPool.LoadAverage(MAIN,1))
93: Server thread pool MAIN: current load (Server.ThreadPool.Load(MAIN))

>>> list = FindAllDCIs($node, "Server*");
>>> foreach (row : list) {
>>>         println(row->id . ": " . row->description . " (" . row->name . ")");
>>> }
100: NetXMS server: database writer's request queue (other queries) (Server.AverageDBWriterQueueSize.Other)
101: NetXMS server: database writer's request queue (Server.AverageDBWriterQueueSize)
103: NetXMS server: data collector's request queue (Server.AverageDataCollectorQueueSize)


>>> list = FindAllDCIs($node, null, "*load average*");
>>> foreach (row : list) {
>>>         println(row->id . ": " . row->description . " (" . row->name . ")");
>>> }
119: CPU: load average (15 minutes) (System.CPU.LoadAvg15)
123: CPU: load average (5 minutes) (System.CPU.LoadAvg5)
83: Server thread pool AGENT: normalized load average (1 minute) (Server.ThreadPool.LoadAverage(AGENT,1))

FindDCIByDescription()

FindDCIByDescription(node, description) => Integer

Find ID of the DCI on node by description (exact match). FindAllDCIs() can be used for pattern search.

Parameters

node

Node object instance (e.g. $node)

description

Description of the DCI

Return

Integer ID of the DCI or null if not found.

Example
>>> d = FindDCIByDescription($node, "Agent Version");
>>> print(d);
144

FindDCIByName()

FindDCIByName(node, dciName) => Integer

Find ID of the DCI on node by name (exact match). FindAllDCIs() can be used for pattern search.

Parameters

node

Node object instance (e.g. $node)

dciName

Name of the DCI

Return

Integer ID of the DCI or null if not found.

Example
>>> d = FindDCIByName($node, "Agent.Version");
>>> print(d);
144

GetAvgDCIValue()

GetAvgDCIValue(object, dciId, periodStart, periodEnd) => Number

Get the average value of the DCI for the given period. The DCI value type must be numeric.

Parameters

object

Instance of Node, Cluster, or MobileDevice object (e.g. $node).

dciId

ID of the DCI to retrive.

periodStart

Unix timestamp of the period start.

periodEnd

Unix timestamp of the period end.

Return

Average value or null on failure.

Example
>>> obj = FindObject("Server1");
>>> dciID = FindDCIByName(obj, "CPU.Usage")
>>> val = GetAvgDCIValue(obj, dciId, 0, time()); // time range from January 1, 1970 untill now
>>> println("Average CPU Usage: ". val . "%");
Average CPU Usage: 17%

GetDCIObject()

GetDCIObject() => Boolean

Parameters

node

Node object instance (e.g. )

Example

GetDCIRawValue()

GetDCIRawValue() => Boolean

Parameters

node

Node object instance (e.g. )

Example

GetDCIValue()

GetDCIValue(node, dciId) => String or Table

Get last collected value of the DCI. Return null on error, Table instance for table DCI or String otherwise.

Parameters

node

Node object instance (e.g. $node)

Return

Table for table DCIs, String, or null if failed or no data is available.

Example
>>> GetDCIValue($node, FindDCIByName($node, "Status"))
0
>>> GetDCIValue($node, FindDCIByName($node, "Non-Existing"))
null

GetDCIValueByDescription()

GetDCIValueByDescription() => Boolean

Parameters

node

Node object instance (e.g. )

Example

GetDCIValueByName()

GetDCIValueByName() => Boolean

Parameters

node

Node object instance (e.g. )

Example

GetDCIValues()

GetDCIValues() => Boolean

Parameters

node

Node object instance (e.g. )

Example

GetMaxDCIValue()

GetMaxDCIValue() => Boolean

Parameters

node

Node object instance (e.g. )

Example

GetMinDCIValue()

GetMinDCIValue() => Boolean

Parameters

node

Node object instance (e.g. )

Example

GetSumDCIValue()

GetSumDCIValue() => Boolean

Parameters

node

Node object instance (e.g. )

Example

PushDCIData()

PushDCIData() => Boolean

Parameters

node

Node object instance (e.g. )

Example

AgentExecuteAction()

AgentExecuteAction(node, actionName, ) => Boolean

Execute agent action on given node. Optional arguments starting from 3rd are passed as action arguments to the agent.

Parameters

node

Node object instance (e.g. $node)

actionName

Name of the action to be executed

Optional arguments for action

Return

Boolean indicator of success

Example
>>> AgentExecuteAction($node, "System.Restart");
true

>>> AgentExecuteAction($node, "Custom.RestartService", "jetty9");
true

>>> AgentExecuteAction($node, "nonexisting action");
false

AgentExecuteActionWithOutput()

AgentExecuteActionWithOutput(node, actionName, ) => String

Execute agent action on given node and collect standard output of the application defined by action. Optional arguments starting from 3rd are passed as action arguments to the agent.

Parameters

node

Node object instance (e.g. $node)

actionName

Name of the action to be executed

Optional arguments for action

Return

Output of the action or null if execution failed.

Example
>>> AgentExecuteActionWithOutput($node, "Custom.Ping", "10.10.8.16");
PING 10.10.8.16 (10.10.8.16): 56 data bytes
64 bytes from 10.10.8.16: icmp_seq=0 ttl=64 time=0.084 ms
64 bytes from 10.10.8.16: icmp_seq=1 ttl=64 time=0.120 ms
64 bytes from 10.10.8.16: icmp_seq=2 ttl=64 time=0.121 ms

AgentReadList()

AgentReadList(node, name) => Array

Request list metric directly from agent on given node.

Parameters

node

Node object instance (e.g. $node)

name

List name

Return

Array of strings or null if failed.

Example
>>> supportedLists = AgentReadList($node, "Agent.SupportedLists");
>>> foreach (l : supportedLists) { println(l); }
Agent.ActionList
Agent.SubAgentList
Agent.SupportedLists
Agent.SupportedParameters
Agent.SupportedPushParameters
…

AgentReadParameter()

AgentReadParameter(node, name) => String

Request metric directly from agent on given node.

Parameters

node

Node object instance (e.g. $node)

name

Metric name

Return

String value or null if failed.

Example
>>> v = AgentReadParameter($node, "Agent.Version")
>>> println(v)
2.2.13

AgentReadTable()

AgentReadTable(node, name) => Table

Request table metric directly from agent on given node.

Parameters

node

Node object instance (e.g. $node)

name

List name

Return

Instance of Table or null if failed.

Example
>>> t = AgentReadTable($node, "Agent.SubAgents");
>>> foreach (c : t->columns) {
>>>   print(c->name . " | ");
>>> }
>>> println("");
>>> foreach (row : t->rows) {
>>>   foreach(cell : row->values) {
>>>      print(cell . " | ");
>>>   }
>>>   println("");
>>> }
NAME | VERSION | FILE |
Darwin | 2.2.13 | darwin.nsm |
FILEMGR | 2.2.13-3-g4c02b65c50 | filemgr.nsm |
PING | 2.2.13-3-g4c02b65c50 | ping.nsm |

Alarm functions

FindAlarmById()

FindAlarmById() => void

Parameters
Example

FindAlarmByKey()

FindAlarmByKey() => void

Parameters
Example

FindAlarmByKeyRegex()

FindAlarmByKeyRegex() => void

Parameters
Example

Events

GetEventParameter()

GetEventParameter() => void

Parameters
Example

SetEventParameter()

SetEventParameter() => void

Parameters
Example

PostEvent()

PostEvent() => void

Parameters
Example

Miscelanious functions

_exit()

_exit(exitCode=0) => void

Stop script execution and return exitCode.

Parameters

exitCode

Optional exit code for the script. Defaults to 0.

AddrInRange()

AddrInRange() => void

Parameters
Example

AddrInSubnet()

AddrInSubnet() => void

Parameters
Example

assert()

assert() => void

Parameters
Example

classof()

classof(instance) => String

Return class name of the instance.

Parameters

instance

Instance of any class.

Return

Class name.

Example
>>> classof($node)
Node

CountryAlphaCode()

CountryAlphaCode(code) => String

Lookup country alpha code by numeric or alpha3 code.

Parameters

code

Numeric (3 digits) or 3-letter country code.

Return

Two letter country code or null if country not found.

Example
>>> CountryAlphaCode('020')
AN
>>> CountryAlphaCode('AND')
AN
>>> CountryAlphaCode('124')
CA

CountryName()

CountryName() => void

Parameters
Example

CountScheduledTasksByKey()

CountScheduledTasksByKey() => void

Parameters
Example

CurrencyAlphaCode()

CurrencyAlphaCode() => void

Parameters
Example

CurrencyExponent()

CurrencyExponent() => void

Parameters
Example

CurrencyName()

CurrencyName() => void

Parameters
Example

DriverReadParameter()

DriverReadParameter() => void

Parameters
Example

EventCodeFromName()

EventCodeFromName() => void

Parameters
Example

EventNameFromCode()

EventNameFromCode() => void

Parameters
Example

GetConfigurationVariable()

GetConfigurationVariable(key, defaultValue=null) => void

Read server configuration parameter by key.

Parameters

key

Configuration parameter name to lookup.

defaultValue

Optional argument with default value if key is not found.

Return

Value of the server configuration parameter. If key is not found, null is returned or defaultValue is specified.

Example
>>> GetConfigurationVariable("NumberOfStatusPollers")
10
>>> GetConfigurationVariable("BadVariable")
NULL
>>> GetConfigurationVariable("BadVariable", 22)
22

gethostbyaddr()

gethostbyaddr() => void

Parameters
Example

gethostbyname()

gethostbyname() => void

Parameters
Example

GetSyslogRuleCheckCount()

GetSyslogRuleCheckCount() => void

Parameters
Example

GetSyslogRuleMatchCount()

GetSyslogRuleMatchCount() => void

Parameters
Example

map()

map(table, key, default=null) => String

Lookup value from mapping table.

Parameters

table

Lookup value from mapping table.

key

String key to lookup.

default

Optional default value.

Return

When key or table is not found, return null or default value if provided.

Example

mapList()

mapList(table, list, separator, default) => String

Lookup multiple keys (separated by user-defined separator) from mapping table. Result string is joined using the same separator.

Parameters

table

name or ID of the mapping table.

list

string of keys separated by separator.

separator

separator used to split list and to produce output.

Example
>>> mapList("table1", "10,20,30", ",")
value1,value2,value3

random()

random() => void

Parameters
Example

ReadPersistentStorage()

ReadPersistentStorage(key) => String

Read value from global persistent key-value storage.

Parameters

key

String record key to lookup.

Return

Value referenced by key or null if key not exist.

Example
>>> ReadPersistentStorage("key1")
value1
>>> ReadPersistentStorage("key2")
null
>>> WritePersistentStorage("key2", "value2")
>>> ReadPersistentStorage("key2")
value2

SecondsToUptime()

SecondsToUptime() => void

Parameters
Example

sleep()

sleep() => void

Parameters
Example

sys()

sys() => void

Parameters
Example

trace()

trace(debugLevel, message) => void

Writes message to NetXMS main log if current debug level is equal or higher than debugLevel.

Parameters

debugLevel

Target debug level.

message

String to be written.

Example
>>> trace(0, "Test");

typeof()

typeof(instance) => string

Return type of the instance.

Parameters

instance

Instance of the object or primitive.

Return

Name of the type.

Example
>>> typeof(1)
int32
>>> typeof(1L)
int64
>>> typeof(%(1, 2, 3))
array
>>> typeof(new Table())
object
>>> typeof(null)
null

WritePersistentStorage()

WritePersistentStorage(key, value) => void

Create or update value in global persistent key-value store.

Parameters

key

String key.

value

String value to be saved.

Example
>>> WritePersistentStorage("key1", "value1")
>>> ReadPersistentStorage("key1")
value1

weierstrass()

weierstrass() => void

Parameters
Example

Situations

FindSituation()

FindSituation() => void

Parameters
Example

GetSituationAttribute()

GetSituationAttribute() => void

Parameters
Example

Hashes and encoding

Base64Decode()

Base64Decode() => void

Parameters
Example

Base64Encode()

Base64Encode() => void

Parameters
Example

md5()

md5() => void

Parameters
Example

sha1()

sha1() => void

Parameters
Example

sha256()

sha256() => void

Parameters
Example

SNMP functions

CreateSNMPTransport()

CreateSNMPTransport(node) => SNMP_Transport

Create SNMP transport with communication settings defined on the node.

Parameters

node

Target node.

Return

Instance of SNMP_Transport or null if failed.

Example
>>> transport = CreateSNMPTransport(FindObject("Server1"))
>>> print transport->snmpVersion
2c

SNMPGet()

SNMPGet(transport, oid) => SNMP_VarBind

Perform SNMP GET request for oid over provided transport.

Parameters

transport

Transport created by CreateSNMPTransport().

oid

SNMP OID string.

Return

Instance of SNMP_VarBind or null on failure.

Example
>>> transport = CreateSNMPTransport(FindObject("Server1"));
>>> if (transport != null) {
>>>   oid = ".1.3.6.1.2.1.25.1.6.0"; // number of running processes
>>>   varbind = SNMPGet(transport, oid);
>>>   if (varbind != null) {
>>>     trace(1, varbind->name . "=" . varbind->value);
>>>   }
>>>   else {
>>>     trace(0, "SNMPGet() failed");
>>>   }
>>> }

SNMPGetValue()

SNMPGetValue(transport, oid) => String

Perform SNMP GET request for oid over provided transport and return single string value instead of varbind.

This function is a wrapper for SNMPGet().

Parameters

transport

Transport created by CreateSNMPTransport().

oid

SNMP OID string.

Return

String value of the result or null on failure.

Example
>>> transport = CreateSNMPTransport(FindObject("Server1"));
>>> if (transport != null) {
>>> oid = ".1.3.6.1.2.1.25.1.6.0"; // number of running processes
>>> value = SNMPGetValue(transport, oid);
>>> if (value != null) {
>>>     trace(1, value);
>>> }
>>> else {
>>>     trace(0, "SNMPGetValue() failed");
>>> }
>>> }

SNMPSet()

SNMPSet(transport, oid, value, dataType) => Boolean

Perform SNMP SET request for oid over provided transport. Return boolean success indicator. value is automatically converted from string based in dataType. If dataType is not provided, default type "STRING" will be used.

Parameters

transport

oid

SNMP OID string.

value

New value.

dataType

Type of the value, default to "STRING":

  • "INTEGER" or "INT" – Integer.

  • "STRING" – Octet string.

  • "OID" – Object id.

  • "IPADDR" or "IP ADDRESS" – IP address.

  • "COUNTER32" – 32-bit counter.

  • "GAUGE32" – 32-bit unsigned integer.

  • "TIMETICKS" – Timeticks.

  • "COUNTER64" – 64-bit counter.

  • "UINTEGER32" or "UINT32" – 32-bit unsigned integer.

Example
>>> if (!SNMPSet(transport, oid, "192.168.0.1", "IPADDR") {
>>>     trace(1, "SNMPSet failed");
>>> }

SNMPWalk()

SNMPWalk(transport, oid) => Array

Perform SNMP WALK request for oid over provided transport and return collected values as array of SNMP_VarBind or null on failure.

Parameters

transport

Transport created by CreateSNMPTransport().

oid

SNMP OID string.

Return

Array of SNMP_VarBind or null or failure.

Example
>>> transport = CreateSNMPTransport(FindObject("Server1"));
>>> if (transport != null) {
>>>     oid = ".1.3.6.1.2.1.25.4.2.1.2"; // Names of the running processes
>>>     vars = SNMPWalk(transport, oid);
>>>     if (vars != null) {
>>>         foreach (v: vars) {
>>>             trace(1, v->name."=".v->value);
>>>         }
>>>     }
>>> }

Filesystem functions

I/O functions are disabled by default. To enable, please modify server parameter "NXSL.EnableFileIOFunctions".

CopyFile()

CopyFile() => void

AF_ENABLE_NXSL_FILE_IO_FUNCTIONS

Parameters
Example

CreateDirectory()

CreateDirectory() => void

AF_ENABLE_NXSL_FILE_IO_FUNCTIONS

Parameters
Example

DeleteFile()

DeleteFile() => void

AF_ENABLE_NXSL_FILE_IO_FUNCTIONS

Parameters
Example

FileAccess()

FileAccess() => void

AF_ENABLE_NXSL_FILE_IO_FUNCTIONS

Parameters
Example

OpenFile()

OpenFile() => void

AF_ENABLE_NXSL_FILE_IO_FUNCTIONS

Parameters
Example

RemoveDirectory()

RemoveDirectory() => void

AF_ENABLE_NXSL_FILE_IO_FUNCTIONS

Parameters
Example

RenameFile()

RenameFile() => void

AF_ENABLE_NXSL_FILE_IO_FUNCTIONS

Parameters
Example

Class Reference

Alarm

Represents NetXMS alarm.

Instance attributes

ackBy ⇒ Number

ID of user who acknowledged this alarm.

creationTime ⇒ Number

Unix timestamp of the alarm creation time.

dciId ⇒ Number

If alarm was created as a result of DCI threshold violation, this attribute will contain ID of the DCI.

eventCode ⇒ Number

Event code of originating event.

eventId ⇒ Number

ID of originating event.

helpdeskReference ⇒ String

Helpdesk system reference (e.g. issue ID).

helpdeskState ⇒ Number

Helpdesk state:

  • 0 = Ignored

  • 1 = Open

  • 2 = Closed

id ⇒ Number

Unique identifier of the alarm.

key ⇒ String

Alarm key.

lastChangeTime ⇒ Number

Unix timestamp of the last update.

message ⇒ String

Alarm message.

originalSeverity ⇒ Number

Original severity of the alarm.

repeatCount ⇒ Number

Repeat count.

resolvedBy ⇒ Number

ID of user who resolved this alarm.

severity ⇒ Number

Current alarm severity.

sourceObject ⇒ Number

ID of the object where alarm is raised.

state ⇒ Number

Alarm state:

  • 0 = Outstanding

  • 1 = Acknowledged

  • 2 = Resolved

  • 17 = Sticky acknowledged

Instance methods

acknowledge() ⇒ Number

Acknowledge alarm. Return 0 on success or error code on failure.

resolve() ⇒ Number

Resolve alarm. Return 0 on success or error code on failure.

terminate() ⇒ Number

Terminate alarm. Return 0 on success or error code on failure.

Chassis

Instance attributes

controller
controllerId
flags
rack
rackId
rackHeight
rackPosition

Cluster

Instance attributes

nodes
zone
zoneUIN

Instance methods

getResourceOwner(name) ⇒ Node

Get node which currently owns named resource.

Parameters

name

String

Name of the resource.

Return

Node object instance which currently owns resource of null if failed.

Component

Instance attributes

class ⇒ String

Type of the component:

  • unknown

  • chassis

  • backplane

  • container

  • power supply

  • fan

  • sensor

  • module

  • port

  • stack

children ⇒ Array

List of direct children (Array of Component object intances).

description ⇒ String
firmware ⇒ String

Component firmware version, if available.

ifIndex ⇒ Number
model ⇒ String

Component model number, if available.

name ⇒ String

Component name, if available.

serial ⇒ String

Component serial number, if available.

vendor ⇒ String

Component vendor, if available.

Container

Object represent container, extends NetObj.

Instance attributes

autoBindScript ⇒ String

Source of the script for automatic binding.

isAutoBindEnabled ⇒ Boolean

Indicate if automatic binding is enabled.

isAutoUnbindEnabled ⇒ Boolean

Indicate if automatic unbinding is enabled.

Instance methods

setAutoBindMode(enableBind, enableUnbind) ⇒ void

Set automatic bind mode for the container.

Parameters

enableBind

Boolean

Script should be used for automatic binding.

enableUnbind

Boolean

Script should be used for automatic unbinding.

setAutoBindScript(script) ⇒ void

Update automatic binding script source.

Parameters

script

String

Script source.

DataCollectionTarget

Instance methods

readInternalParameter(name) ⇒ String

DCI

Represents Data Collection Item (DCI).

Instance attributes

activeThresholdSeverity
comments

Comments (since 2.0-M5)

dataType

Configured data type; possible values are:

  • DCI::INT32 (0) = Integer

  • DCI::UINT32 (1) = Unsigned integer

  • DCI::INT64 (2) = 64 bit integer

  • DCI::UINT64 (3) = 64 bit unsigned integer

  • DCI::STRING (4) = String

  • DCI::FLOAT (5) = Floating point number

  • DCI::NULL (6) = null

description

Description

errorCount

Number of consecutive data collection errors

hasActiveThreshold
id

Unique DCI identifier

instance

DCI instance (only for single value DCIs)

instanceData
lastPollTime

Time of last DCI poll (either successful or not) as number of seconds since epoch (1 Jan 1970 00:00:00 UTC)

name

Parameter’s name

origin

Data origin (source); possible values are:

  • 0 = Internal

  • 1 = NetXMS agent

  • 2 = SNMP agent

  • 3 = Check Point SNMP agent

  • 4 = Push

status

DCI status; possible values are:

  • 0 = Active

  • 1 = Disabled

  • 2 = Not supported

systemTag

System tag. Always empty for user-defined DCIs.

template
templateId
templateItemId
type

DCI type:

  • 1 = single value

  • 2 = table

Event

Represents NetXMS event object.

Instance attributes

code ⇒ Number

Event code

customMessage ⇒ String

Custom message set in event processing policy by calling setMessage.

id ⇒ Number

Unique event identifier.

message ⇒ String

Event message.

name ⇒ String

Event name.

parameters ⇒ Array

List of event parameters. Starting index is 1.

parameterNames ⇒ Array

List of named event parameters (e.g. "dciId"), which can be accessed by object->parameterName.

severity ⇒ Number

Event severity code.

source ⇒ NetObj

Source object (inherited from NetObj, exact type can be checked with classof() function) for the event.

sourceId ⇒ Number

ID of the source object for the event.

timestamp

Unix timestamp of the event.

userTag

User tag associated with event (set by calling setUserTag()).

$1…$n

Shortcut for parameters[n] (e.g. "$event→parameters[3]" can be replaced with "$event→$3").

$…

Named event parameters can be accessed directly by the name (e.g $event->dciId). List of available named parameters can be accessed with parameterNames attribute.

Instance methods

setMessage(message) ⇒ void

Set event message to message.

Parameters

message

Message string

setSeverity(severityCode) ⇒ void

Change event severity to severityCode.

Parameters

severityCode

Numeric severity code:

  • 0 - NORMAL

  • 1 - WARNING

  • 2 - MINOR

  • 3 - MAJOR

  • 4 - CRITICAL

setUserTag(tag) ⇒ void

Set custom tag, which can be later accessed via userTag attribute.

Parameters

tag

String tag

toJson() ⇒ String

Serialize object to JSON.

Return

String representation of the object in JSON format.

FILE

Instance attributes

eof ⇒ ?
name ⇒ ?

Instance methods

close() ⇒ ?
read() ⇒ ?
readLine() ⇒ ?
write() ⇒ ?
writeLine() ⇒ ?

GeoLocation

Represents geographical location (defined by latitude and longitude).

Instance attributes

isManual ⇒ ?
isValid → ?
latitude ⇒ Number

Latitude as floating point number

latitudeText ⇒ String

Latitude as text

longitude ⇒ Number

Longitude as floating point number

longitudeText ⇒ String

Longitude as text

type ⇒ Number

Data source type:

  • 0 – Unset

  • 1 – Manual

  • 2 - GPS

  • 3 - Network

Constructors

GeoLocation(latitude, longitude, type=1)

Create instance of the class based on floating-point latitude and longitude. Optional argument type can be used to override default value 1 ("Manual").

Constants

Location Types
Value Description

0

Unset (represents unknown location)

1

Manual (set by system administrator)

2

Automatic (obtained from GPS)

3

Network (obtained from network, for example using WiFi AP database)

Examples

Print node location
>>> nodeLoc = $node->geolocation
>>> println(nodeLoc->latitudeText)
N 48° 00' 0.000"
>>> println(nodeLoc->longitudeText)
E 22° 00' 0.000"
Set node location
>>> nodeLoc = GeoLocation(22.11, 48.12, 1)
>>> $node->setGeoLocation(nodeLoc)
>>> println($node->geolocation->latitudeText)
N 48° 12' 0.000"
>>> println($node->geolocation->longitudeText)
E 22° 11' 0.000"
Clear location
>>> $node->clearGeoLocation()
>>> println($node->geolocation)
null

InetAddress

Instance attributes

address → ?
family → ?
isAnyLocal → ?
isBroadcast → ?
isLinkLocal → ?
isLoopback → ?
isMulticast → ?
isValid → ?
isValidUnicast → ?
mask → ?

Constructors

InetAddress()
InetAddress(string)

Interface

Represent interface object. Inherit all attributes and methods of the NetObj class.

Constants

Interface states
Code Description

0

Unknown

1

Up

2

Down

3

Testing

Interface expected states
Code Description

0

Up

1

Down

2

Ignore

Instance attributes

adminState

Administrative state of the interface.

alias

Interface alias (usually value of SNMP ifAlias).

bridgePortNumber

Bridge port number for this interface.

description

Interface description

dot1xBackendAuthState

802.1x back-end authentication state

dot1xPaeAuthState

802.1x PAE authentication state

expectedState

Expected state of the interface.

flags Interface flags (bit mask, uint32).

ifIndex

Interface index.

ifType

Interface type

ipAddressList → ?
ipNetMask

IP network mask (number of bits).

isExcludedFromTopology

TRUE if this interface excluded from network topology

isLoopback

TRUE if this interface is a loopback

isManuallyCreated

TRUE if this interface object was created manually by NetXMS administrator

isPhysicalPort

TRUE if this interface object represents physical port

macAddr

String representation of MAC address separated by ":".

mtu

Interface MTU (0 if unknown).

node

Parent node object

operState

Operational state.

peerInterface

Peer interface object if known, otherwise null.

peerNode

Peer node object if known, otherwise null.

port

Port number.

slot

Slot number.

speed

Speed of the interface.

vlans → ?
zone

Zone object (null if zoning is disabled).

zoneUIN → ?

Instance methods

setExcludeFromTopology(excluded) ⇒ void

Change isExcludedFromTopology flag.

Parameters

excluded

Boolean

TRUE if interface should be excluded.

setExpectedState(newState) ⇒ void

Set expected state to newState.

Parameters

newState

Number

New state as defined by Interface expected states.

MobileDevice

Instance attributes

batteryLevel → ?
deviceId → ?
model → ?
osName → ?
osVersion → ?
serialNumber → ?
userId → ?
vendor → ?

NetObj

Base class for all NetXMS objects.

Constants

Object Statuses
Code Description

0

Normal

1

Warning

2

Minor

3

Major

4

Critical

5

Unknown

6

Unmanaged

7

Disabled

8

Testing

Object Types
Code Description

0

Generic

1

Subnet

2

Node

3

Interface

4

Network

5

Container

6

Zone

7

Service Root

8

Template

9

Template Group

10

Template Root

11

Network Service

12

VPN Connector

13

Condition

14

Cluster

Instance attributes

Object custom attributes can be accessed in the same way as instance attribute, if names do not overlap. GetCustomAttribute() should be used otherwise.

alarms

Array of Alarm objects of object`s active alarms.

city

Postal address - city.

comments

Object comments.

country

Postal address – country.

customAttributes

Hash map of object custom attributes.

geolocation

Object geographical location.

guid

Object GUID as string.

id

Object identifier (uint32).

ipAddr

Primary IP address (string).

mapImage ⇒ ?
name

Object name.

postcode

Postal address – postal code.

status

Object status.

streetAddress

Postal address – street.

type

Object type.

Instance methods

clearGeoLocation() ⇒ void

Clears GeoLocation data from the node

setComments ⇒ ?
setGeoLocation(newLocation)

Sets node geographical location.

Parameters

newLocation

setMapImage() ⇒ ?
setStatusCalculation() ⇒ ?
setStatusPropagation() ⇒ ?

NewNode

Represents newly discovered node object. Used by discovery filters.

Instance attributes

agentVersion

NetXMS agent version string, if available.

ipAddr

String representation of IP address.

isAgent

TRUE if NetXMS agent is detected on node.

isBridge

TRUE if node is a bridge.

isCDP

TRUE if node supports CDP (Cisco Discovery Protocol).

isLLDP

TRUE if node supports LLDP (Link Layer Discovery Protocol).

isPrinter

TRUE if node is a printer.

isRouter

TRUE if node is a router (has IP forwarding enabled).

isSNMP

TRUE if SNMP agent detected on node.

isSONMP

TRUE if node supports SONMP/NDP (Synoptics/Nortel Discovery Protocol).

netMask

Number of bits in IP network mask.

platformName

Platform name reported by NetXMS agent.

snmpOID

SNMP object identifier (value of .1.3.6.1.2.1.1.2.0).

snmpVersion

Detected SNMP version:

  • 0 = SNMP version 1

  • 1 = SNMP version 2c

  • 2 = SNMP version 3

subnet

IP subnet address as string. Example: node with IP address 192.168.2.7 and network mask 255.255.255.0, is in a subnet 192.168.2.0.

zone ⇒ ?
zoneUIN ⇒ ?

Node

Represents NetXMS node object. Extends DataCollectionTarget.

Instance attributes

agentCertificateSubject ⇒ ?
agentId ⇒ ?
agentVersion

NetXMS agent version as string.

bootTime

Number of seconds since node start or 0 if unknown.

bridgeBaseAddress

Base address of the switch formatted as 12 character string without separators. Value is only valid for bridges and switches. Special value 000000000000 indicates that address is unknown.

components ⇒ ?
dependentNodes ⇒ ?
driver

Named of selected device-specific SNMP driver.

flags

Bit mask of Node flags, uint32.

hypervisorInfo ⇒ ?
hypervisorType ⇒ ?
is802_1x

TRUE if node supports 802.1x. Equivalent of isPAE.

isAgent ⇒ ?

TRUE if NetXMS agent detected on node

isBridge

TRUE if node is a bridge

isCDP

TRUE if node supports CDP (Cisco Discovery Protocol)

isInMaintenanceMode ⇒ ?
isLLDP

TRUE if node supports LLDP (Link Layer Discovery Protocol)

isLocalManagement

TRUE if node is a local management server (NetXMS server)

isLocalMgmt

TRUE if node is a local management server (NetXMS server)

isPAE

TRUE if node supports 802.1x. Equivalent of is802_1x.

isPrinter

TRUE if node is a printer

isRouter

TRUE if node is a router (has IP forwarding enabled)

isSNMP

TRUE if SNMP agent detected on node

isSONMP

TRUE if node supports SONMP/NDP (Synoptics/Nortel Discovery Protocol)

isSTP ⇒ ?
isVirtual ⇒ ?
lastAgentCommTime ⇒ ?
nodeSubType ⇒ ?
nodeType ⇒ ?
platformName

Platform name reported by NetXMS agent

rack ⇒ ?
rackHeight ⇒ ?
rackId ⇒ ?
rackPosition ⇒ ?
runtimeFlags

Bit mask of Node runtime flags, uint32.

snmpOID

SNMP object identifier (result of .1.3.6.1.2.1.1.2.0 request)

snmpSysContact

SNMP system contact (result of .1.3.6.1.2.1.1.4.0 request)

snmpSysLocation

SNMP system location (result of .1.3.6.1.2.1.1.6.0 request)

snmpSysName

SNMP system name (result of .1.3.6.1.2.1.1.5.0 request)

snmpVersion

Configured SNMP version:

  • 0: SNMP version 1

  • 1: SNMP version 2c

  • 2: SNMP version 3

sysDescription

System description (value of System.Uname for nodes with agents or .1.3.6.1.2.1.1.1.0 for SNMP nodes)

zone

Zone object (null if zoning is disabled)

zoneUIN ⇒ ?

Instance methods

void enableAgent(boolean flag)

Enable or disable usage of NetXMS agent for all polls.

void enableConfigurationPolling(boolean)

Enable or disable configuration polling for a node

enableDiscoveryPolling() ⇒ ?
enableIcmp(boolean)

Enable or disable usage of ICMP pings for status polls

enableRoutingTablePolling() ⇒ ?
enableSnmp(boolean)

Enable or disable usage of SNMP for all polls

enableStatusPolling

Enable or disable status polling for a node

enableTopologyPolling(boolean)

Enable or disable topology polling

Constants

Node flags
Value Description

0x003FFF7F

NF_SYSTEM_FLAGS

0xFFC00080

NF_USER_FLAGS

0x00000001

NF_IS_SNMP

0x00000002

NF_IS_NATIVE_AGENT

0x00000004

NF_IS_BRIDGE

0x00000008

NF_IS_ROUTER

0x00000010

NF_IS_LOCAL_MGMT

0x00000020

NF_IS_PRINTER

0x00000040

NF_IS_OSPF

0x00000080

NF_REMOTE_AGENT

0x00000100

NF_IS_CPSNMP. CheckPoint SNMP agent on port 260

0x00000200

NF_IS_CDP

0x00000400

NF_IS_NDP. Supports Nortel (Synoptics/Bay Networks) topology discovery

0x00000400

NF_IS_SONMP. SONMP is an old name for NDP

0x00000800

NF_IS_LLDP. Supports Link Layer Discovery Protocol

0x00001000

NF_IS_VRRP. VRRP support

0x00002000

NF_HAS_VLANS. VLAN information available

0x00004000

NF_IS_8021X. 802.1x support enabled on node

0x00008000

NF_IS_STP. Spanning Tree (IEEE 802.1d) enabled on node

0x00010000

NF_HAS_ENTITY_MIB. Supports ENTITY-MIB

0x00020000

NF_HAS_IFXTABLE. Supports ifXTable

0x00040000

NF_HAS_AGENT_IFXCOUNTERS. Agent supports 64-bit interface counters

0x00080000

NF_HAS_WINPDH. Node supports Windows PDH parameters

0x00100000

NF_IS_WIFI_CONTROLLER. Node is wireless network controller

0x00200000

NF_IS_SMCLP. Node supports SMCLP protocol

0x00400000

NF_DISABLE_DISCOVERY_POLL

0x00800000

NF_DISABLE_TOPOLOGY_POLL

0x01000000

NF_DISABLE_SNMP

0x02000000

NF_DISABLE_NXCP

0x04000000

NF_DISABLE_ICMP

0x08000000

NF_FORCE_ENCRYPTION

0x10000000

NF_DISABLE_STATUS_POLL

0x20000000

NF_DISABLE_CONF_POLL

0x40000000

NF_DISABLE_ROUTE_POLL

0x80000000

NF_DISABLE_DATA_COLLECT

Node runtime flags
Value Description

0x0001

QUEUED_FOR_STATUS_POLL

0x0002

QUEUED_FOR_CONFIG_POLL

0x0004

UNREACHABLE

0x0008

AGENT_UNREACHABLE

0x0010

SNMP_UNREACHABLE

0x0020

QUEUED_FOR_DISCOVERY_POLL

0x0040

FORCE_STATUS_POLL

0x0080

FORCE_CONFIGURATION_POLL

0x0100

QUEUED_FOR_ROUTE_POLL

0x0200

CPSNMP_UNREACHABLE

0x0400

RECHECK_CAPABILITIES

0x0800

POLLING_DISABLED

0x1000

CONFIGURATION_POLL_PASSED

0x2000

QUEUED_FOR_TOPOLOGY_POLL

0x4000

DELETE_IN_PROGRESS

0x8000

NETWORK_PATH_PROBLEM

NodeDependency

Instance attributes

id ⇒ ?
isAgentProxy ⇒ ?
isDataCollectionSource ⇒ ?
isICMPProxy ⇒ ?
isSNMPProxy ⇒ ?
type ⇒ ?

SNMP_Transport

Represents SNMP Transport functionality. Objects of this class are typically obtained from nodes that support SNMP. Objects of this class used to access SNMP functions of nodes.

Instance attributes

snmpVersion

SNMP version used by the transport. Can be "1", "2c" or "3"

SNMP_VarBind

Represents an SNMP varbind concept in NetXMS. A varbind logically consists of an OID and a value.

Instance attributes

name

Object name (OID string).

printableValue

Object value as a printable string.

type

ASN.1 type.

value

Object value as a string.

valueAsIp

Object value IP address, represented as string.

valueAsMac

Object value as MAC address, represented as string.

Subnet

Instance attributes

ipNetMask ⇒ ?
isSyntheticMask ⇒ ?
zone ⇒ ?
zoneUIN ⇒ ?

Instance methods

method() ⇒ void

Description.

Table

Represents table object (usually it’s value of table DCI).

Instance attributes

columnCount ⇒ Number

Number of columns.

columns ⇒ Array<TableColumn>

Array of column definitions.

rowCount ⇒ Numbers

Number of rows.

rows ⇒ Array<TableRow>

Array of rows with data.

title ⇒ String

Title of table.

Instance methods

addColumn(name, [type], [displayName], [isInstance]) ⇒ Number
addRow() ⇒ Number
deleteColumn(columnId) ⇒ void
deleteRow(rowId) ⇒ void
get(rowId, columnId) ⇒ String
getColumnIndex(columnName) ⇒ Number
getColumnName(columnId) ⇒ String
set(rowId, columnId, value) ⇒ void

TableColumn

Represents table column definition object (used by Table class).

Instance attributes

dataType

Data type

displayName

Display name

isInstanceColumn

TRUE if column is marked as instance column

name

Column name

TableRow

Instance attributes

index ⇒ Number
values ⇒ Array<String>

Instance methods

get(columnId) ⇒ String
set(columnId, value) ⇒ void

TIME

Class containing a calendar date and time broken down into its components. For convenience, all attributes has aliases to match struct tm provided in libc.

Instance attributes

sec ⇒ Number
tm_sec ⇒ Number

Seconds after the minute.

min ⇒ Number
tm_min ⇒ Number

Minutes after the hour.

hour ⇒ Number
tm_hour ⇒ Number

Hours since midnight.

mday ⇒ Number
tm_mday ⇒ Number

Day of the month.

mon ⇒ Number
tm_mon ⇒ Number

Months since January.

year ⇒ Number
tm_year ⇒ Number

Year.

yday ⇒ Number
tm_yday ⇒ Number

Days since January 1.

wday ⇒ Number
tm_wday ⇒ Number

Days since Sunday.

isdst ⇒ Boolean
tm_isdst ⇒ Boolean

Daylight Saving Time flag.

Zone

Represent network zone. Inherit all attributes and methods of the NetObj class.

Instance attributes

proxyNode ⇒ ?
proxyNodeId ⇒ ?
uin ⇒ ?

Global Constants

DCI::INT32

Integer value: 0

Data type of DCI instance – singed 32 bit integer.

DCI::UINT32

Integer value: 1

Data type of DCI instance – unsinged 32 bit integer.

DCI::INT64

Integer value: 2

Data type of DCI instance – singed 64 bit integer.

DCI::UINT64

Integer value: 3

Data type of DCI instance – unsinged 64 bit integer.

DCI::STRING

Integer value: 4

Data type of DCI instance – string.

DCI::FLOAT

Integer value: 5

Data type of DCI instance – float.

DCI::NULL

Integer value: 6

Data type of DCI instance – null.

Formal Grammar

Grammar
script ::=
  module |
  expression

module ::=
  module_component { module_component }

module_component ::=
  function |
  statement_or_block |
  use_statement

use_statement ::=
  use any_identifier ";"

any_identifier ::=
  IDENTIFIER |
  COMPOUND_IDENTFIER

function ::=
  sub IDENTIFIER "(" [ identifier_list ] ")" block

identifier_list ::=
  IDENTIFIER { "," IDENTIFIER }

block ::=
  "{" { statement_or_block } "}"

statement_or_block ::=
  statement |
  block

statement ::=
  expression ";" |
  builtin_statement |
  ";"

builtin_statement ::=
  simple_statement ";" |
  if_statement |
  do_statement |
  while_statement |
  for_statement |
  foreach_statement |
  switch_statement |
  array_statement |
  global_statement |
  break ";"
  continue ";"

simple_statement ::=
  keyword [ expression ]

keyword ::=
  exit |
  print |
  println |
  return

if_statement ::=
  if "(" expression ")" statement_or_block [ else statement_or_block ]

for_statement ::=
  for "(" expression ";" expression ";" expression ")" statement_or_block

foreach_statement ::=
  foreach "(" IDENTIFIER ":" expression ")" statement_or_block

while_statement ::=
  while "(" expression ")" statement_or_block

do_statement ::=
  do statement_or_block while "(" expression ")" ";"

switch_statement ::=
  switch "(" expression ")" "{" case { case } [ default ] "}"

case ::=
  case constant ":" { statement_or_block }

default ::=
  default ":" { statement_or_block }

array_statement ::=
  [ global ] array identifier_list ";"

global_statement ::=
  global global_variable_declaration { "," global_variable_declaration } ";"

global_variable_declaration ::=
  IDENTIFIER [ "=" expression ]

expression ::=
  "(" expression ")" |
  IDENTIFIER "=" expression |
  expression "->" IDENTIFIER |
  "-" expression |
  "!" expression |
  "~" expression |
  inc IDENTIFIER |
  dec IDENTIFIER |
  IDENTIFIER inc |
  IDENTIFIER dec |
  expression "+" expression |
  expression "-" expression |
  expression "*" expression |
  expression "/" expression |
  expression "%" expression |
  expression like expression |
  expression ilike expression |
  expression "~=" expression |
  expression match expression |
  expression imatch expression |
  expression "==" expression |
  expression "!=" expression |
  expression "<" expression |
  expression "<=" expression |
  expression ">" expression |
  expression ">=" expression |
  expression "&" expression |
  expression "|" expression |
  expression "^" expression |
  expression "&&" expression |
  expression "||" expression |
  expression "<<" expression |
  expression ">>" expression |
  expression "." expression |
  expression "?" expression ":" expression |
  operand

operand ::=
  function_call |
  type_cast |
  constant |
  IDENTIFIER

type_cast ::=
  builtin_type "(" expression ")"

builtin_type ::=
  int32 |
  int64 |
  uint32 |
  uint64 |
  real |
  string

function_call ::=
  IDENTIFIER "(" [ expression { "," expression } ] ")"

constant ::=
  STRING |
  INT32 |
  INT64 |
  UINT32 |
  UINT64 |
  REAL |
  NULL
Terminal symbols
IDENTIFIER ::= [A-Za-z_\$][A-Za-z_\$0-9]*
COMPOUND_IDENTIFIER ::= { IDENTIFIER}(::{ IDENTIFIER})+
INTEGER ::= \-?(0x)?[0-9]+
INT32 ::= INTEGER
INT64 ::= {INTEGER}L
UINT32 ::= {INTEGER}U
UINT64 ::= {INTEGER}(UL|LU)
REAL ::= \-?[0-9]+\.[0-9]+