This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Two of Eef's bugs, was: Re: gfortran


Thomas Koenig <Thomas.Koenig@online.de> wrote on Fri, 22 Dec 2006:
On Fri, Dec 22, 2006 at 09:20:12AM -0800, Steve Kargl wrote:

   "Integer output constants are produced with the effect of
    an Iw edit descriptor."
    ...
   "For numeric output, reasonable processor-dependent values
    of w, d, and e are used for each of the numeric constants
    output."

In this case, we could make the default format for list-directed output of integers '(" ",I0)'.


For portable code, Eef needs to determine the processor-dependent value for w.

I don't think w has to be the same value for all constants. It would probably be best to use a format that cannot overflow the substring, such as

write (unit=c(1:5),fmt='(I5)') i

In fact, by the excerpts you posted from the standard, there are no guarantees that list-directed output to internal units could ever work, as the processor-chosen value for w could always exceed the length of the internal unit. That said, g77 does something rather weird here: I had expected it to do the same as with formatted output: if there's not enough space, print asterisks '*', but it simply truncates the string:
schluter@pcl247d:~/src> cat internal.f
character*20 c
integer i
c = ""
i = 1
do j=1,5
c = "12345678901234567890"
write (c(1:5),*) i
print *, c
i=i*100
end do
end


schluter@pcl247d:~/src> g77 internal.f
schluter@pcl247d:~/src> ./a.out
  1   678901234567890
  100 678901234567890
  1000678901234567890
  1000678901234567890
  1000678901234567890
schluter@pcl247d:~/src>

I don't think we should imitate g77 here, but as we've seen, no matter how we deviate from g77, someone will get bitten by it, and complain :-/

Cheers,
- Tobi

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]