sjc@key.COM (Steve Correll) (11/12/89)
Fortran 77 section 15.4.3 prohibits a statement function from altering its dummy arguments by passing them as actual arguments to an external function invocation. Fortran 88 version 112 section 12.5.4 omits the prohibition. It does use the word "value" in a fashion that might be intended to mean the same thing, except that "call by value" is not a concept defined in these standards, and even so, "call by value" is not the same as being prohibited from altering the argument. Without the prohibition, legal Fortran 77 programs would still conform, but certain compiler optimizations would no longer be legal. Have I overlooked the prohibition somewhere in Fortran 88? If not, can somebody from X3J3 tell me whether 12.5.4 is meant to sustain the prohibition, or whether it was deliberately omitted? Thanks. -- ...{sun,pyramid}!pacbell!key!sjc Steve Correll
hirchert@uxe.cso.uiuc.edu (11/14/89)
>Have I overlooked the prohibition somewhere in Fortran 88? If not, can somebody >from X3J3 tell me whether 12.5.4 is meant to sustain the prohibition, or >whether it was deliberately omitted? Thanks. There was definitely not intent to remove this prohibition. It is unclear whether 12.5.4 is sufficient to sustain the prohibition, or whether the FORTRAN 77 prohibition was overlooked when 12.5.4 was written. If you're writing a public comment letter, I suggest pointing out this problem in it. (I've written a note to myself to mention it in mine, but I'm in the middle of changing offices, so there's no guarantee that I will be able to find that note when it comes time to write my letter.) Kurt W. Hirchert hirchert@ncsa.uiuc.edu National Center for Supercomputing Applications