Мой файл данных testdata.dat выглядит так:
2.75420e+002;2.75327e+002;2.75281e+002;2.75178e+002;2.75052e+002;2.74908e+002;2.74847e+002;2.74761e+002;2.74689e+002;2.74497e+002
2.75420e+002;2.75327e+002;2.75281e+002;3.75178e+002;2.75052e+002;2.74908e+002;2.74847e+002;2.74761e+002;2.74689e+002;2.74497e+002
2.75420e+002;2.75327e+002;2.75281e+002;4.75178e+002;2.75052e+002;2.74908e+002;2.74847e+002;2.74761e+002;2.74689e+002;2.74497e+002
То есть 10 значений на строку и 3 строки, и обратите внимание, как я изменил значения четвертого столбца по сравнению с вашими исходными данными.
Моя программа для чтения запрашивает у пользователя следующую колонку:
program readspeccol
integer :: readcol, i,j
double precision :: a(3) ! 3 = number of lines in file
character(len=1) :: junk
print *,'input column:'
read(5,*) readcol
open(unit=15, file='testdata.dat')
do i = 1, 3
read(15,'(10(es12.5,1a))') (a(i),junk, j=1,readcol)
! 10 = number of values in line
enddo
print *, a
end program readspeccol
Если я скажу прочитать четвертый столбец, выполнение будет:
$> ./a.out
input column:
4
275.17800000000000 375.17800000000000 475.17800000000000
Эта программа может быть улучшена, но я думаю, что это в основном то, что вы ищете.