PROGRAM ProcExample;
  VAR
   x, y, z : Real;

  PROCEDURE A;
    VAR
      i, j, x, k : Integer;

    FUNCTION B : Integer;

      PROCEDURE C;
        VAR
          i, j, x : Char;
      BEGIN
        { i, j and x are local and Char }
	{ k is local to A and Integer }
        { y and z are global and Real }        
      END;  { c }

    VAR
      a, y, z : Boolean;
    BEGIN
      {i, j, k and x are local to A and Integer }
      {y and z are global and Real }
    END;  { b } 
  BEGIN
      {i, j, k and x are local to A and Integer }
      {y and z are global and Real }
  END;  { a }

  PROCEDURE D;
    VAR z : Integer
    BEGIN
      { z is local and Integer }
      { a and y are global and Real }
    END; { d } 

  BEGIN  { main }
  END. { main }
  