D
Dennis Lee Bieber
Maybe because there was NO change in calling convention. FORTRAN wasNot mentioned in the wiki article is the change in calling convention
from call by value to call by reference (or maybe the opposite). I
remember a program crashing because of this when I tried it with F77.
call by reference in all versions I've worked with. DEC did add special
"functions" to force a parameter to be passed as "value", "reference", or
"descriptor" -- mostly to interface with other languages (descriptor is
what was used for character strings -- basically a structure containing the
length of the string/buffer, and the address of said buffer).
However, one may have encountered an implementation that did some
checking for duplicated parameter addresses -- or may have behaved
internally as a value/return system, wherein the by-reference parameters
were copied to local/stack storage, manipulated, and only written back to
the reference address on exit. That would result in differences:
a = 1
call xyz(a, b, a)
subroutine xyz(x, y, z)
x = x + 1
z = z * 2
....
In a true by-reference system, "a" would turn into 2 for the first
assignment, but then turn into 4 after the second.
In value/return, the second assignment still sees "1" and results in
"2", and thereby "a" becomes "2", not "4"...
I'd still consider a value/return scheme to be a misbehaving FORTRAN.