Something just occurred to me with regard to call by name. There are no SETS and USES attributes in an Algol 60 parameter declaration. If a parameter is used as an l-value, there is a potential problem. A value like A[I} is legitimate on either side of an assignment, but a value like A[I]+1 is valid only on the right.
In languages with call by reference and with procedure parameters, this becomes a non-issue: A[I]+1 is not a valid reference. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3