[comp.lang.fortran] Other non-errors

jlg@lanl.gov (Jim Giles) (03/02/89)

Consider the following code:

1     open(1,file='something',status='old')
2     open(1,blank='zero')
3     read(1,'(f7.12)')x
      ...
4     open(2,file='newfile',status='unknown')
5     write(1,'(f7.12)')x

Possible errors are: 
      'something' and 'newfile' may not be legal file names.  Acceptable
          file names are processor dependent - there may not even be any
          acceptable file names.

      The unit specifiers 1 and 2 may not exist.  Acceptable unit
          specifiers are processor dependent - there must be _some_
          which are legal though.

      'something' may not exist at line 1 as required by the 'old' status.

      For status='unknown' in line 4, the status is processor dependent.
          If the processor dependent status is 'scratch', then the presence
          of a file name is illegal.

      The additional open in line 2 is _not_ illegal.  Nor does it open
          another file.  This open statement changes the blank meaning
          for the existing connection to unit 1.

      The format specification in line 3 is _not_ illegal.  The standard
          gives a prefectly reasonable description of what should be done
          here.

      The format specification in line 5 _is_ illegal.

      The whole example may not be accepted by a compiler which doesn't
          accept lower case letters.

All these examples are things that I have seen in benchmark and other
test codes used by various people to test compilers/libraries.  In addition,
I have seen many compilers/libraries do some of the above wrong - especially
lines 2 and 3!  I am collecting examples of non-intuitive Fortran,
particularly things that most people consider errors but which aren't.
Anybody else out there got a favorite example?

J. Giles
Los Alamos