Scripting problem with global variables in version 2.0-M2

Started by DrCamel, April 04, 2015, 04:46:26 PM

Previous topic - Next topic

DrCamel

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

tomaskir

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.

DrCamel

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