Fixing Fortran 77 Output Bugs with Negative Exponents

  • Context: Fortran 
  • Thread starter Thread starter conquertheworld5
  • Start date Start date
  • Tags Tags
    Fortran Output
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
2 replies · 3K views
conquertheworld5
Messages
22
Reaction score
0
I recently inherited some legacy code written in fortran77 which I'm going to be modifying quite a bit, and at this stage I find that I'm continually getting stuck on small fortran quirks... Just wondering if I could get some advice on this particular problem.

I'm outputting the values of several arrays one element at a time since I'm already looping over all the elements for other reasons:


Code:
write(5,101) x(j),z(i),dp(i,j)
101 format(2e15.5,1e15.5)


I get some nice columns as expected in my ascii file:
Code:
.10790E+03   .92222E+02  .53132E-02
.10790E+03   .94909E+02  .12401E-12
.10790E+03   .97909E+02  .43214E-50

The problem is that the third column occasionally has values that have 3-digit negative exponents and for some reason the E is being left out. So instead of .23414E-200, I'm getting .223414-200. I've tried increasing the number of characters and the number of significant digits in the format statement but no matter what I do, it doesn't print the E for any negative exponent with more than two digits.
Anyone know:
1) Why this is happening?
2) How to get it to print the E?

Also, I recognize that these are SMALL numbers, and they probably reflect some other problem in the code somewhere. So when I figure that out, I probably won't have to worry about this problem, but it's bugging me that I can't get the E to print with the numbers as is...
 
Physics news on Phys.org
I think its part of the Fortran 77 standard to do this. If you look here: http://www.fortran.com/F77_std/rjcnf0001-sh-13.html#sh-13.5.9.2.2 the table indicates that the 'e' is omitted for exponents whose modulus is greater than 99