My datafile testdata.dat looks like:
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
That is, 10 values per line and 3 lines, and note how I've changed the fourth column values from your original data.
My program for reading it asks the user for the column to read:
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
If I tell it to read the fourth column, execution is:
$> ./a.out
input column:
4
275.17800000000000 375.17800000000000 475.17800000000000
This program could be tweaked further, but I think it is basically what you are looking for.