Strange IO behaviour from SUN f77
Lars Andersson
larsa at nada.kth.se
Mon Jan 29 03:09:09 AEST 1990
I found what appears to be a bug in SUN f77 (version 1.1 under SUN OS
4.0.3). The problem appears to be caused by not flushing the input buffer
after a read error condition has been detected. The problem is reproduced
by the following piece of code:
PROGRAM TTT
INTEGER A
100 CONTINUE
#ifndef NOFLUSH
CALL FLUSH(5)
#endif NOFLUSH
WRITE(6 ,'(A$)')'TESTING'
READ(5 ,*,ERR=100,END=998)A
write(*,*)'ANSWER = ',A
GOTO 1000
998 CONTINUE
WRITE(*,*)'END OF FILE FOUND'
1000 CONTINUE
END
saving this in a file ttt.F and compiling with
f77 -o ttt ttt.F
produces an executable which has the correct behaviour, namely inputting a
character instead of an integer causes the prompt to appear and processing
continues. On the other hand compiling with
f77 -DNOFLUSH -o ttt ttt.F
and entering a character causes an infinite loop (be warned, this is how I
discovered the problem.....).
As I understand it, the correct behaviour is to flush the input buffer and
this is what appears to happen with the old SUN f77 (under 3.5). If there
exists a patch which cures this behaviour, I would like to be informed of
it.
On a different note: one feature which I sorely miss (or have been unable
to find) in the SUN f77 is the possibility to set, at compiletime,
"floating point indefinite" as initial value for variables. This is quite
effective in finding bugs in your code and is possible on some machines
that I know of. Any comments?
Lars Andersson
larsa at nada.kth.se
More information about the Comp.sys.sun
mailing list