Я думаю, что вы решаете несуществующую проблему.Это правда, что по умолчанию спецификатор Fortran E output имеет начальный ноль перед десятичной точкой (это можно изменить).Но когда спецификатор E используется для input , он очень терпим и не требует начального нуля - если у вас есть десятичная точка в числе и число соответствует столбцам, указанным в формате, этобудет работать.
Вот пример программы на Фортране и пример входного файла.
program test_format
real :: num1, num2, num3
open (unit=16, file="numbers_3.txt", status='old', access='sequential', form='formatted', action='read' )
read (16, 1010 ) num1
read (16, 1010 ) num2
read (16, 1010 ) num3
1010 format (E9.5)
write (*, *) num1, num2, num3
stop
end program test_format
и пример ввода с тремя разными случаями:
3.1473E3
0.31473E4
3147.3
IПротестировал программу с gfortran и Intel ifort.Вывод был:
3147.300 3147.300 3147.300
Таким образом, при выполнении ввода с использованием спецификатора формата Fortran's E необязательно, чтобы цифра перед десятичной точкой была равна нулю.Нет необходимости даже в том, чтобы входное значение использовало E-нотацию!
Редактировать / PS Я перевел программу в исходную компоновку с фиксированной формой FORTRAN 77 и скомпилировал ее с g77 - он прочитал три номера тестапросто хорошо.Электронный формат долгое время был гибким для ввода - возможно, начиная с FORTRAN IV, возможно, дольше.