First, I just want to say what an excellent product NetXMS is, thanks to everyone involved in making it what it is today.
Now on to the issue I am experiencing, I am having a problem with scripting in that global variables do not appear to be working correctly (or I am misunderstanding how to use them, which is possibly more likely).
I am defining a global variable in the following way:-
global GlobalStringConstant = "String Value";
However when I try to reference the global variable in functions, all I get is a NULL object.
To test this I created a script in the script library called "TestScript" with the following code:-
global GlobalStringConstant = "String Value";
sub main() {
typeofValue = typeof(GlobalStringConstant);
println "Type:-";
println typeofValue;
println "Value:-";
println GlobalStringConstant;
}
Then in the server console, when I issue the command "exec TestScript", I get the following output:-
Type:-
null
Value:-
INFO: Script finished with rc=0
Where I was expecting the output:-
Type:-
string
String Value
INFO: Script finished with rc=0
I am running the current development version 2.0-M2 with the 64bit binaries running on a Windows Server 2008 R2 virtual machine which is connected to a Microsoft SQL Server 2008 R2 backend database.
Any assistance anyone can offer would be very much appreciated.
Thanks!
Simon
In your example
global GlobalStringConstant = "String Value";
Is never executed
Please read this article:
https://wiki.netxms.org/wiki/UM:NetXMS_Scripting_Language_(NXSL)#Script_entry_point
You implicit main is never executed, since you have an explicit main.
Therefore, the variable "GlobalStringConstant" is never initialized.
Ahh, yes, I see what you mean - I have modified my code based on your feedback and it is working correctly now.
Thank you very much for your help!
Simon