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