comp.lang.ada
 help / color / mirror / Atom feed
From: Jeffrey Carter <jrcarter@acm.org>
Subject: Re: Local vs global variables in ADA
Date: Mon, 04 Nov 2002 01:47:02 GMT
Date: 2002-11-04T01:47:02+00:00	[thread overview]
Message-ID: <3DC5D1B7.1060707@acm.org> (raw)
In-Reply-To: 5Ldx9.3695$151.38236@weber.videotron.net

Roger wrote:
> Yes I'm an Ada newbie and have a questions about local and global variables.
> When exactly is a variable said to be global?

This is a good question. Unlike some languages, in which a variable is 
either global or local, Ada has various degrees of locality. This 
sometimes causes heated discussions between those who follow a strict, 
blind-obedience rule of no global variables and those with a better 
understanding of the matter.

For example, a variable declared in a package body may be global to the 
subprograms in the package, but they are not visible outside the 
package. Knee-jerk rule following says these are not allowed because 
they're global variables. Actually, these are state variables for the 
package and perfectly acceptable.

The only real global variables in Ada are those declared in the visible 
part of package specifications. These are a no-no.

> 
> for example I have this code
> --main procedure
> Procedure Main Is
> --If I declare a variable here will it be considered as
> --global to the sub procedures?

Yes.

> --sub procedure
> Procedure Sub
> 
> Begin
> 
> End Sub;
> 
> 
> 
> Begin
> --If I declare a variable here will it be considered as
> --global to the sub procedure?
> End Main;

You can't declare a variable there without a block statement. Perhaps 
you meant

begin -- Main
    declare
       -- variable declaration
    begin
       ...
    end;
end Main;

in which case you can have declarations there. Such declarations are not 
visible outside the block statement in which they are declared, so they 
are not visible to Sub.

Not that Ada is not C, so your main procedure can have a more 
informative name than "Main" if you like.

-- 
Jeff Carter
"Monsieur Arthur King, who has the brain of a duck, you know."
Monty Python & the Holy Grail




  parent reply	other threads:[~2002-11-04  1:47 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-03 18:17 Local vs global variables in ADA Roger
2002-11-03 19:03 ` Per Sandbergs
2002-11-03 19:31 ` Eric Jacoboni
2002-11-04  1:47 ` Jeffrey Carter [this message]
2002-11-04 13:27   ` Wes Groleau
2002-11-04 20:48     ` Jeffrey Carter
2002-11-05  8:43       ` Fraser Wilson
2002-11-05 13:53         ` Charles H. Sampson
2002-11-06  4:59           ` R. Tim Coslet
2002-11-05 17:28         ` Stephen Leake
2002-11-05 17:38           ` Jean-Pierre Rosen
2002-11-05 19:57             ` Jeffrey Carter
2002-11-06  9:11               ` Jean-Pierre Rosen
2002-11-05 20:26             ` Vinzent Hoefler
2002-11-05 23:14             ` Wes Groleau
2002-11-06  9:16               ` Jean-Pierre Rosen
2002-11-06 13:49                 ` Wes Groleau
2002-11-05 22:37           ` Robert A Duff
2002-11-05 23:46             ` Larry Hazel
2002-11-06  2:19               ` Dennis Lee Bieber
2002-11-06 13:45                 ` Dan Nagle
2002-11-07  0:30                   ` Dennis Lee Bieber
2002-11-06  2:15             ` Dennis Lee Bieber
2002-11-06  7:04               ` Martin Dowie
2002-11-06 14:40               ` john mann
2002-11-07  0:25                 ` Dennis Lee Bieber
2002-11-07 14:58                   ` Robert A Duff
2002-11-07 15:38                     ` Jean-Pierre Rosen
2002-11-08  1:43                   ` Jeffrey Carter
2002-11-06  7:18             ` Dale Stanbrough
2002-11-06 15:40             ` Rod Chapman
2002-11-06 17:34             ` Stephen Leake
2002-11-10  1:36               ` loop statements, was " David Thompson
2002-11-05 19:54         ` Jeffrey Carter
2002-11-04 13:47 ` Martin Dowie
  -- strict thread matches above, loose matches on Subject: below --
2002-11-05  6:42 Grein, Christoph
2002-11-05 15:59 ` Martin Dowie
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox