From: Matthew Heaney <matthew_heaney@acm.org>
Subject: Re: scope and/or parameters (beginner)
Date: 1999/04/03
Date: 1999-04-03T00:00:00+00:00 [thread overview]
Message-ID: <m390cabjo0.fsf@mheaney.ni.net> (raw)
In-Reply-To: 37064309.889106243@news.dsuper.net
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 2624 bytes --]
fluffy_pink@dsuper.net writes:
> Here is what I have that doesn't work:
> -----------------------------------------------------------
> PROCEDURE One_Procedure
> ( Second_Variable : IN The_Type;
> Third_Variable : OUT The_Type ) IS
>
> -- types & sub-types: none ===========================
> -- sub-programs ======================================
>
> PROCEDURE Internal_Procedure
> ( One_Variable : IN OUT The_Type ) IS
> BEGIN
> One_Variable := One_Variable + A_Constant;
> -- What goes on here is not important. The point
> -- Is that I am (want to) modify the value of
> -- "One_Variable" and bring its new value to
> -- "One_Procedure", as an IN OUT should be used.
> END Internal_Procedure;
>
> -- variables: none ===================================
>
> BEGIN -- One_Procedure
>
> Internal_Procedure ( One_Variable => (QUESTION) );
> Third_Variable = Second_Variable + Another_Constant;
> -- More stuff goes here using "Third_Variable".
>
> END One_Procedure;
> -----------------------------------------------------------
>
> In my main program I have declared the following variables:
>
> Var_2, Var_3 : The_Type;
>
> In my main program I am calling "One_Proc�dure" with:
>
> One_Procedure
> (Second_Variable => Var_2, Third_Variable => Var_3);
>
> If for "(QUESTION)" I use "Second_Variable" the compiler tells me that
> for an OUT or an IN OUT I must have an actual parameter that **is a
> variable***. I don't understand why it tells me this. Obviously, if
> I use "Var_2", then it says that it cannot see "Var_2"; that I think I
> understand.
The problem is that anywhere inside One_Procedure, the object
Second_Variable is a constant, because it's an in-mode parameter.
Yes, the object Var_2 is a variable, but One_Procedure doesn't know
this. One_Procedure is looking at Var_2 via the formal parameter
Second_Variable, which is in-mode, and therefore is constant.
> How can I pass the value of Var_2 from my main program, into
> One_Procedure, and then from One_Procedure into Internal_Procedure,
> and then to make it come back out modified (IN OUT) so that it will
> end up in One_Proc�dure ?
Make the formal parameter Second_Variable mode in out, instead of mode
in.
Here's a little formula for formal parameter modes:
in = object is treated as a constant
in out = object is treated as a variable
> I don't want to use the modified value of Var_2 (modified by
> Internal_Procedure) at the main program level; I want to use it only
> in One_Proc�dure.
Then you have to make a local copy.
next prev parent reply other threads:[~1999-04-03 0:00 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-04-02 0:00 scope and/or parameters (beginner) fluffy_pink
1999-04-03 0:00 ` Matthew Heaney [this message]
1999-04-05 0:00 ` Corey Ashford
1999-04-05 0:00 ` fluffy_doo
1999-04-06 0:00 ` Matthew Heaney
1999-04-08 0:00 ` czgrr
1999-04-10 0:00 ` fluffy_puff
1999-04-12 0:00 ` dennison
1999-04-13 0:00 ` Robert Dewar
1999-04-13 0:00 ` czgrr
1999-04-13 0:00 ` Robert Dewar
1999-04-14 0:00 ` czgrr
1999-04-14 0:00 ` dennison
1999-04-14 0:00 ` Robert Dewar
1999-04-15 0:00 ` czgrr
1999-04-15 0:00 ` Robert Dewar
1999-04-13 0:00 ` Robert A Duff
1999-04-14 0:00 ` Robert Dewar
1999-04-14 0:00 ` Hyman Rosen
1999-04-14 0:00 ` dennison
1999-04-14 0:00 ` Hyman Rosen
1999-04-14 0:00 ` dennison
1999-04-14 0:00 ` Hyman Rosen
1999-04-15 0:00 ` dennison
1999-04-15 0:00 ` Robert Dewar
1999-04-15 0:00 ` dennison
1999-04-15 0:00 ` Hyman Rosen
1999-04-15 0:00 ` Robert Dewar
1999-04-15 0:00 ` Hyman Rosen
1999-04-15 0:00 ` Robert Dewar
1999-04-15 0:00 ` Hyman Rosen
1999-04-16 0:00 ` Rakesh Malhotra
1999-04-15 0:00 ` fluffy_dong
1999-04-15 0:00 ` Robert Dewar
1999-04-15 0:00 ` dennison
1999-04-15 0:00 ` fluffy_dong
1999-04-16 0:00 ` Robert Dewar
1999-04-16 0:00 ` Fraser Wilson
1999-04-16 0:00 ` Gautier.DeMontmollin
1999-04-20 0:00 ` Nick Roberts
1999-04-21 0:00 ` fraser
1999-04-22 0:00 ` Robert A Duff
1999-04-22 0:00 ` Larry Kilgallen
1999-04-16 0:00 ` Samuel Mize
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox