#### A.1.7 Accessing Global Variables in Oct-Files

Global variables allow variables in the global scope to be accessed. Global variables can be accessed within oct-files by using the support functions `get_global_value` and `set_global_value`. `get_global_value` takes two arguments, the first is a string representing the variable name to obtain. The second argument is a boolean argument specifying what to do if no global variable of the desired name is found. An example of the use of these two functions is

    #include <octave/oct.h>

    DEFUN_DLD (globaldemo, args, , "Global Demo")
    {
      octave_value retval;
      int nargin = args.length ();

      if (nargin != 1)
        print_usage ();
      else
        {
          std::string s = args(0).string_value ();
          if (! error_state)
            {
              octave_value tmp = get_global_value (s, true);
              if (tmp.is_defined ())
                retval = tmp;
              else
                retval = "Global variable not found";

              set_global_value ("a", 42.0);
            }
        }
      return retval;
    }

An example of its use is

    global a b
    b = 10;
    globaldemo ("b")
    ⇒ 10
    globaldemo ("c")
    ⇒ "Global variable not found"
    num2str (a)
    ⇒ 42