1
我正在使用fortran 77.我有多個(比如N個)包含相同大小(比如S)的數據文件。我想將所有這些數據文件以一個大小爲(N * S)的數組讀入我的程序中。數據文件以排列方式命名(datafile1.dat,datafile2.dat ...... datafileN.dat)。在Fortran中的單個數組中讀取多個數據文件
任何線索我該怎麼辦?
謝謝!
我正在使用fortran 77.我有多個(比如N個)包含相同大小(比如S)的數據文件。我想將所有這些數據文件以一個大小爲(N * S)的數組讀入我的程序中。數據文件以排列方式命名(datafile1.dat,datafile2.dat ...... datafileN.dat)。在Fortran中的單個數組中讀取多個數據文件
任何線索我該怎麼辦?
謝謝!
使用Fortran 95的符號表示的可能的解決辦法是這樣的:
program test
implicit none
integer, parameter :: NN = 2
integer, parameter :: SS = 3
character(len=128) :: fname
integer :: data(NN * SS)
integer :: ii
do ii = 1, NN
write(fname, "(A,I0,A)") "datafile", ii, ".dat"
open(12, file=fname, form="formatted")
read(12, *) data((ii-1)*SS+1:ii*SS)
close(12)
end do
print *, data
end program test
您可以輕鬆將其改寫成Fortran 77的符號如果需要的話,雖然大多數編譯器的Fortran理解已經90/95:
program test
implicit none
integer NN, SS
parameter(NN = 2, SS = 3)
character*128 fname
integer data(NN * SS)
integer ii, jj
do ii = 1, NN
write(fname, "(A,I0,A)") "datafile", ii, ".dat"
open(12, file=fname, form="formatted")
do jj = 1, SS
read(12, *) data((ii-1)*SS+jj)
end do
close(12)
end do
print *, data
end program test
嚴格雖然它是一個廣泛實施的擴展,但是說'implicit none'並不是FORTRAN77的標準。它被賦予了Fortran 90標準。 – 2013-02-15 09:56:17
@HighPerformanceMark:謝謝!我不知道。幸運的是,我不必處理F77代碼(再多)。 – 2013-02-15 10:30:28
也不是,當我做第一件事情時,就是按照你的建議插入'implicit none'。 – 2013-02-15 10:32:59