------- Comment #17 from jvdelisle at gcc dot gnu dot org 2009-12-07 01:35 ------- I found the thread on this:
http://www.rhinocerus.net/forum/lang-fortran/585916-printing-64-bit-binary-number-gfortran-4-1-2-a.html Richard Maine says: " from the thread > program test_acos > > implicit none > real*8 :: x > integer*8 :: i > equivalence (i,x) > i = z'3FE826E143045DBE' > x = acos(x) > write(*,1400) x > 1400 format(B64) > end program test_acos .... > Fortran runtime error: Expected INTEGER for item 2 in formatted > transfer, got REAL That is correct. The B edit descriptor is only for integers. > However, when I asked to print a 16-digit HEX by changing line 9 to > 1400 format(Z16) > it worked. That is a nonstandard feature, probably for compatibility with some existing codes that used a similar extension from before when the Z edit descriptor was added to the standard. The standard only allows the Z edit descriptor for integers, just like the B edit descriptor. > How can I print the value of x at the end in binary? Use the TRANSFER intrinsic to transfer the bits in x to integer type before printing. Alternatively, you could use an equivalence. Such use of equivalence is technically nonstandard, but that's a pretty fine point of nitpicking; it will work. The TRANSFER solution is fully standard conforming. I note as an aside that your line > i = z'3FE826E143045DBE' also violates the standard. The standard allows hex constants only in *VERY* limited contexts. In fact, for f95, it is allowed only in a DATA statement; f2003 adds a few other places, but not many and not this one. Although this usage is moderately common extension, the provision of the standard that it violates is a constraint. This means that the compiler is required to be able to diagnose the usage. Did you use the compiler's option to check for violations of the standard. If not, I suggest doing so. If you did and the compiler still did not complaint, than that would count as a compiler bug and should be so reported." -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41711