cudac@warwick.UUCP (08/13/87)
The following piece of code can produce different effects on different
implementations of Fortran77. It demonstrates the differences in BLANK
handling in formatted input from internal files.
CHARACTER*8 BUFF
BUFF = '1'
READ(BUFF,'(F8.0)') X
WRITE(*,*) X
STOP
END
Unix 4.2 bsd f77 yeilds:-
1.00000
whilst IBM's VS FORTRAN yields:-
10000000.0
I can't find anywhere in the Fortran 77 standard which defines the effect
of blank handling on internal files. Any suggestions on which is correct?
Tim Clark.
T.Clark@daisy.warwick.ac.uk or:-
UUCP: ...!ukc!warwick!daisy!T.Clark |Post: Computing Services
ARPA: T.Clark%daisy.warwick.ac.uk@cs.ucl.ac.uk | University of Warwick
JANET: T.Clark@uk.ac.warwick.daisy | Coventry, UK
Phone: +44 203 523224 | CV4 7ALBeebe@SCIENCE (Nelson H.F. Beebe) (08/15/87)
X-Us-Mail: "Center for Scientific Computation, South Physics, University of Utah, Salt Lake City, UT 84112" X-Telephone: (801) 581-5254 Regarding the following observation from T.Clark@daisy.warwick.ac.uk >> CHARACTER*8 BUFF >> BUFF = '1' >> READ(BUFF,'(F8.0)') X >> WRITE(*,*) X >> STOP >> END >> >> Unix 4.2 bsd f77 yeilds:- >> 1.00000 >> >> whilst IBM's VS FORTRAN yields:- >> 10000000.0 Sun OS 3.3 (~4.2BSD) gives 1.0, while DEC VAX VMS and TOPS-20 give the same value as IBM. The Standard is silent on the question of BLANK=ZERO or BLANK=NULL for internal files. Historically (pre-Fortran 77), BLANK=ZERO was the default, and on that basis, Unix is wrong, and DEC and IBM are right. However, if the BLANK= specifier is omitted in an OPEN statement, the default is BLANK=NULL, which would suggest that Unix is correct, and the others are wrong. However, no OPEN statement is involved for internal files, so it appears we have a definite ambiguity in ANSI X3.9-1978. A programming solution is simply to change the format to use a BN or BZ item, depending on the desired interpretation of blanks. -------