ADA Compiling Query

Gordon Russell <gor@cs.strath.ac.uk>
11 Feb 91 15:06:41 GMT

          From comp.compilers

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)
| List of all articles for this month |
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]
--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.