On Oct 4, 12:35 am, "John W. Kennedy" <jwke... / attglobal.net> wrote:
> Dennis Lee Bieber wrote:
> > On Mon, 01 Oct 2007 01:53:47 GMT, Roedy Green
> > <see_webs... / mindprod.com.invalid> declaimed the following in
> > comp.lang.python:

> >> Seem to me you could in FORTRAN and Pascal, and maybe even Algol.  It
> >> has been a while.

> >    Everything in classic FORTRAN is a passed as a reference -- even
> > constant arguments are passed as a reference to the memory location
> > containing that constant (which is why it was possible in very early
> > FORTRANs to have "a = 1 + 1" yield something other than "2" if preceded
> > by, say, "call mutate(1)" where mutate looks like:

> > subroutine mutate(arg)
> > arg = arg * 2
> > end
> > )

> However, some implementations passed /and returned/ elementary
> arguments by value, as Ada does. (The object code was
> typically faster that way, and FORTRAN semantics were such
> that the difference was almost impossible to observe.)

The Fortran standard is carefully worded to allow either pass by
reference, or copy-in, copy-out.  IIRC, IBM's Fortran-H used
copy-in/copy-out, but most others used call by reference.

Straight copy was never allowed by the standard, and I've never
heard of a pre-standard implementation which used it either.

--
James Kanze (GABI Software)             email:james.kanze / gmail.com
Conseils en informatique orient˝Ă objet/
                   Beratung in objektorientierter Datenverarbeitung
9 place S˝╬ard, 78210 St.-Cyr-l'ą╬cole, France, +33 (0)1 30 23 00 34