You could provide your own routine to read, such as adapting from the following example:
character real_string25, aa(3)25
real10 x
real8 y
integer4 iostat,i
!
aa(1) = '7.500000000000000E-2'
aa(2) = '3.500000000000003400E-2'
aa(3) = '3.500003400000000000E-20'
!
do i = 1,3
real_string = aa(i)
read (real_string, fmt='(bn,f25.0)', iostat=iostat) x
write (,) 'String = ',real_string
write (,) 'X = ',x
write (,) 'error = ',iostat
y = x
write (,) 'Y = ',y
call trim_real_string (real_string)
write (,*) 'String = ',real_string
end do
!
end
subroutine trim_real_string (real_string)
!
! trims training 0 from real number string
!
character real_string*(*)
!
character real_part*25, exponent_part*10
integer*4 ie,i
!
ie = index(real_string, 'E')
!
if (ie > 0) then
real_part = real_string(1:ie-1)
exponent_part = real_string(ie:)
else
real_part = real_string
exponent_part = ' '
end if
!
do i = len_trim(real_part),1,-1
if (real_part(i:i) /= '0') exit
end do
!
if (index(real_part, '.') > 0) real_string = real_part(:i) // exponent_part
!
end subroutine trim_real_string
John