function file_reading, k, filename
;----------
;Help
;----------
;Purpose of function is to simplify reading from files. For this, this function calculates the
;number of lines in file and afterwards proceeds to read with correspondent vector dimension.
;Only information necessary is number of columns in file.
;PARAMETERS:
;1. k number of columns in file
;2. filename string representing name of read file
;----------
;File preparation
;----------
close,1
read1=string(filename)
openr,1,read1
;----------
;Variable preparation (line counting)
;----------
N=0L
a=0D
;----------
;Line counting
;----------
while not EOF(1) do begin
readf,1,a
N=N+1L
endwhile
close, 1
;----------
;Variable preparation (reading)
;----------
k=double(k)
data = dblarr(k,N)
openr,1,read1
a = 0D
b = 0D
c = 0D
d = 0D
e = 0D
f = 0D
g = 0D
h = 0D
z = 0D ;no helping it - i is already used for something else
j = 0D
q = 0D ;the same with k...
l = 0D
m = 0D
;----------
;File reading (depending of number of rows)
;----------
if k eq 1 then begin
for i=0, N-1 do begin
readf, 1,a
data[0,i]=a
endfor
endif
if k eq 2 then begin
for i=0d, N-1d do begin
readf, 1,a,b
data[0,i]=a
data[1,i]=b
endfor
endif
if k eq 3 then begin
for i=0, N-1 do begin
readf, 1,a,b,c
data[0,i]=a
data[1,i]=b
data[2,i]=c
endfor
endif
if k eq 4 then begin
for i=0, N-1 do begin
readf, 1,a,b,c,d
data[0,i]=a
data[1,i]=b
data[2,i]=c
data[3,i]=d
endfor
endif
if k eq 5 then begin
for i=0D, double(N-1) do begin
readf, 1,a,b,c,d,e
data[0,i]=a
data[1,i]=b
data[2,i]=c
data[3,i]=d
data[4,i]=e
endfor
endif
if k eq 6 then begin
for i=0, N-1 do begin
readf, 1,a,b,c,d,e,f
data[0,i]=a
data[1,i]=b
data[2,i]=c
data[3,i]=d
data[4,i]=e
data[5,i]=f
endfor
endif
if k eq 7 then begin
for i=0, N-1 do begin
readf, 1,a,b,c,d,e,f,g
data[0,i]=a
data[1,i]=b
data[2,i]=c
data[3,i]=d
data[4,i]=e
data[5,i]=f
data[6,i]=g
endfor
endif
if k eq 8 then begin
for i=0, N-1 do begin
readf, 1,a,b,c,d,e,f,g,h
data[0,i]=a
data[1,i]=b
data[2,i]=c
data[3,i]=d
data[4,i]=e
data[5,i]=f
data[6,i]=g
data[7,i]=h
endfor
endif
if k eq 9 then begin
for i=0, N-1 do begin
readf, 1,a,b,c,d,e,f,g,h,z
data[0,i]=a
data[1,i]=b
data[2,i]=c
data[3,i]=d
data[4,i]=e
data[5,i]=f
data[6,i]=g
data[7,i]=h
data[8,i]=z
endfor
endif
if k eq 10 then begin
for i=0, N-1 do begin
readf, 1,a,b,c,d,e,f,g,h,z,j
data[0,i]=a
data[1,i]=b
data[2,i]=c
data[3,i]=d
data[4,i]=e
data[5,i]=f
data[6,i]=g
data[7,i]=h
data[8,i]=z
data[9,i]=j
endfor
endif
if k eq 11 then begin
for i=0, N-1 do begin
readf, 1,a,b,c,d,e,f,g,h,z,j,q
data[0,i]=a
data[1,i]=b
data[2,i]=c
data[3,i]=d
data[4,i]=e
data[5,i]=f
data[6,i]=g
data[7,i]=h
data[8,i]=z
data[9,i]=j
data[10,i]=q
endfor
endif
if k eq 12 then begin
for i=0, N-1 do begin
readf, 1,a,b,c,d,e,f,g,h,z,j,q,l
data[0,i]=a
data[1,i]=b
data[2,i]=c
data[3,i]=d
data[4,i]=e
data[5,i]=f
data[6,i]=g
data[7,i]=h
data[8,i]=z
data[9,i]=j
data[10,i]=q
data[11,i]=l
endfor
endif
if k eq 13 then begin
for i=0, N-1 do begin
readf, 1,a,b,c,d,e,f,g,h,z,j,q,l,m
data[0,i]=a
data[1,i]=b
data[2,i]=c
data[3,i]=d
data[4,i]=e
data[5,i]=f
data[6,i]=g
data[7,i]=h
data[8,i]=z
data[9,i]=j
data[10,i]=q
data[11,i]=l
data[12,i]=m
endfor
endif
;----------
;Finalization
;----------
close, 1
return, data
end