Example showing scope of variables

The following script illustrates the difference between global and local variables. Note that functions can be defined anywhere, so long as it is before they are called.


      set echo off

      genr testvar = 1
      printf "in main: testvar = %d\n", testvar  

      function foo
         # create a local variable
         genr my testvar = 2
         printf "in foo: testvar = %d\n", testvar
         bar
         printf "back in foo: testvar = %d\n", testvar
         # generate a global variable
         genr glob = 15
      end function

      function bar
         genr my testvar = 3
         printf "in bar: testvar = %d\n", testvar
      end function

      # call foo, which calls bar
      foo
      printf "back in main: testvar = %d, glob = %d\n", \
      testvar, glob 
      # list the global variables 
      ls 
    

The output from the above is:


      gretl version 1.3.0 ...
      ? nulldata 5
      periodicity: 1, maxobs: 5,
      observations range: 1-5
      ? set echo off
      Generated scalar testvar (ID 2) = 1
      in main: testvar = 1
      Generated scalar testvar (ID 3) = 2
      in foo: testvar = 2
      Generated scalar testvar (ID 4) = 3
      in bar: testvar = 3
      back in foo: testvar = 2
      Generated scalar glob (ID 4) = 15
      back in main: testvar = 1, glob = 15
      Listing 4 variables:
      0) const       1) index       2) testvar     3) glob