2013-02-15 151 views
1

我正在使用fortran 77.我有多個(比如N個)包含相同大小(比如S)的數據文件。我想將所有這些數據文件以一個大小爲(N * S)的數組讀入我的程序中。數據文件以排列方式命名(datafile1.dat,datafile2.dat ...... datafileN.dat)。在Fortran中的單個數組中讀取多個數據文件

任何線索我該怎麼辦?

謝謝!

回答

1

使用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 
+1

嚴格雖然它是一個廣泛實施的擴展,但是說'implicit none'並不是FORTRAN77的標準。它被賦予了Fortran 90標準。 – 2013-02-15 09:56:17

+0

@HighPerformanceMark:謝謝!我不知道。幸運的是,我不必處理F77代碼(再多)。 – 2013-02-15 10:30:28

+1

也不是,當我做第一件事情時,就是按照你的建議插入'implicit none'。 – 2013-02-15 10:32:59