Related articles |
---|
ADA Compiling Query gor@cs.strath.ac.uk (Gordon Russell) (1991-02-11) |
Re: ADA Compiling Query mfeldman@eesun.gwu.edu (1991-02-12) |
Re: ADA Compiling Query gor@computer-science.strathclyde.ac.uk (1991-02-13) |
Re: ADA Compiling Query jb@rti.rti.org (1991-02-13) |
Newsgroups: | comp.lang.ada,comp.compilers |
From: | Gordon Russell <gor@cs.strath.ac.uk> |
Keywords: | Ada, question |
Organization: | Comp. Sci. Dept., Strathclyde Univ., Scotland. |
Date: | 11 Feb 91 15:06:41 GMT |
Hi out there,
I am hoping that someone on the network can answer a compiler implementation
problem for me. The problem stems from my PhD research into compiler
techniques. If we consider the following program extract...
variable1 : integer;
procedure MAIN is
variable1 : integer;
result : integer;
----------------------------------------------------
procedure GET_RESULT(variable2: in out integer) is
begin
variable1=2;
variable2=variable1 + variable2;
end GET_RESULT;
----------------------------------------------------
begin
variable1=10;
get_result(variable1);
end MAIN;
My question is.......what is variable1 equal to at the end of MAIN?
There appears to be a number of options....either
(1) 4
(2) 12
(3) Something wierd
(4) Compiler dependent.
Evidentally, it is reliant on whether GET_RESULT operates on variable2
directly or indirectly. I am hoping that the results are compiler
dependent. Does anyone have an ADA compiler who is willing to test this?
I am especially interested to hear from official sources (if they are
reading this), since I do not want to break any validation suite
program.
Reply either to this newsgroup or by email. I will post a concensus if
comments are mailed directly to me. Please no flames if this program is
not syntatically correct, as it is the mechanism which I am inquiring
after. And yes, I do think that this is poor programming practice,
but when has that stopped anyone!
Thanx in advance.....Gordon Russell
gor@cs.strath.ac.uk
[I would expect that a look at the standard would answer this question
quickly. The issue of call by reference vs. call by copy in/copy out is at
least 30 years old. Algol 60 inadvertently introduced call by name which
forced situations like this to compute the answer 4. The various Fortran
standards have remained resolutely ambiguous, leaving the interpretation up
to the compiler writer. The "in out" syntax suggests that copy in/copy out
is expected, but what the syntax suggests and what the standard says are of
course entirely different things. -John]
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.