Scope refers to the area of a program that a variable remains valid.  For example if we define a variable, 'number', in the function 'func1' as follows:

int  func1()
{
    double number;
}

then try to access that variable in another function like this:

int  func2()
{
    double number_2 = number;    // ERROR: number undefined
}

we have a problem.  The problem is that a variable is not valid outside of the scope it is defined in. In the example above the "scope" is the function that it is defined in.  We refer to 'number' as having "local scope" or simply refer to it as a "local variable". 

If we had declared 'number' outside of 'func1', that is outside of any function, then the variable has "global scope" or is a "global variable":

double number;                   // global variable

int  func1()
{
    number = 3.14159;            // assign value to the global
}

int  func2()
{
    double number_2 = number;    // OK: number is a global
}

Now that's ok.  Since 'number' has global scope it is "visible" to everything in the script. In fact 'number' is visible to everything including other scripts and variable's expressions in Command mode.  Incidentally, variables created in messiah's Command mode are global variables themselves.  These variables are not accessible through scripts because they are "static".

Static Global Variables:
We talked about static storage variables in the section Variables where we found that declaring a variable static meant that it's value would be retained between calls.  Static variables have an additional meaning when we are talking about global variables.  A static global variable has it's scope limited to the script it's declared in.  That means that it has global scope inside that script, but it's scope is limited to that file. 

foo.msa
static double number;    // static global variable
double number_2;         // non-static global variable

bar.msa
double  func1()
{
    double tmp = foo.number;     // ERROR: number is static
    double tmp2 = foo.number_2;  // OK: number_2 is non-static
}

Assume that all variables declared through messiah's Command mode are declared in a file with static storage, therefore they are inaccessible.  You can of course pass their values as arguments to a script function.

Converted from CHM to HTML with chm2web Pro 2.82 (unicode)