home *** CD-ROM | disk | FTP | other *** search
/ ftp.ee.pdx.edu / 2014.02.ftp.ee.pdx.edu.tar / ftp.ee.pdx.edu / pub / users / Harry / compilers / p11 / tst / call2.pcat < prev    next >
Text File  |  2006-03-05  |  2KB  |  51 lines

  1. (* This program tests access of non-local variables. *)
  2.  
  3. program is
  4.  
  5.   procedure foo1 () is
  6.  
  7.       procedure foo2 () is
  8.           var x2, y2: integer := 2;
  9.               z2: real := 0.9002;
  10.           begin
  11.             write ("Within foo2...");
  12.             write ("x0 = ", x0, ", y0 = ", y0, ", z0 = ", z0);
  13.             write ("x1 = ", x1, ", y1 = ", y1, ", z1 = ", z1);
  14.             write ("x2 = ", x2, ", y2 = ", y2, ", z2 = ", z2);
  15.             write ("Changing non-locals...");
  16.             y0 := 1000;
  17.             y1 := 1001;
  18.             y2 := 1002;
  19.             z0 := 1.9000;
  20.             z1 := 1.9001;
  21.             z2 := 1.9002;
  22.             write ("x0 = ", x0, ", y0 = ", y0, ", z0 = ", z0);
  23.             write ("x1 = ", x1, ", y1 = ", y1, ", z1 = ", z1);
  24.             write ("x2 = ", x2, ", y2 = ", y2, ", z2 = ", z2);
  25.             write ("...Leaving foo2");
  26.             return;
  27.           end;
  28.  
  29.       var x1, y1: integer := 1;
  30.           z1: real := 0.9001;
  31.       begin
  32.         write ("Within foo1...");
  33.         write ("x0 = ", x0, ", y0 = ", y0, ", z0 = ", z0);
  34.         write ("x1 = ", x1, ", y1 = ", y1, ", z1 = ", z1);
  35.         foo2 ();
  36.         write ("x0 = ", x0, ", y0 = ", y0, ", z0 = ", z0);
  37.         write ("x1 = ", x1, ", y1 = ", y1, ", z1 = ", z1);
  38.         write ("...Leaving foo1");
  39.         return;
  40.       end;
  41.  
  42.   var x0, y0: integer := 0;
  43.       z0: real := 0.9000; 
  44.   begin
  45.     write ("Within main...");
  46.     write ("x0 = ", x0, ", y0 = ", y0, ", z0 = ", z0);
  47.     foo1 ();
  48.     write ("x0 = ", x0, ", y0 = ", y0, ", z0 = ", z0);
  49.     write ("...Leaving main");
  50.   end;
  51.