From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII X-Google-Thread: 103376,a1a88c4d509f6381,start X-Google-Attributes: gid103376,public From: fluffy_pink@dsuper.net Subject: scope and/or parameters (beginner) Date: 1999/04/02 Message-ID: <37064309.889106243@news.dsuper.net>#1/1 X-Deja-AN: 462094820 Content-Transfer-Encoding: 8bit Organization: Delphi SuperNet Inc. Content-Type: text/plain; charset=ISO-8859-1 Mime-Version: 1.0 Newsgroups: comp.lang.ada Date: 1999-04-02T00:00:00+00:00 List-Id: Hi, My problem has to do with using the proper types of parameters and the distinctions between the formal and the actual ones, all of this in the context of wanting to pass a value two (2) levels down and then one (1) level back up. (Passing a value from a sub-program to one of its constituent sub-program is what I call passing that value one level down.) 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. 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 ? 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. Thanks and forgive me if it's not clear. I really tried. Marc -- What I really am is "fluffy", no "_dong", no "_puff", no "_woo", no nothing, just plain fluffy.