1

我正在使用 Fortran 对拆分为许多文件的庞大数据集进行计算。文件的名称是:

maltoLyo12per-reimage-set1.traj
maltoLyo12per-reimage-set2.traj
maltoLyo12per-reimage-set3.traj

我编写的用于计算的代码如下:

fileLoop: do j = 31, 34

 OPEN(unit=31,status='old',file=fileplace//'maltoLyo12per-reimage-set1.traj')
 OPEN(unit=32,status='old',file=fileplace//'maltoLyo12per-reimage-set2.traj')
 OPEN(unit=33,status='old',file=fileplace//'maltoLyo12per-reimage-set3.traj')
 OPEN(unit=34,status='old',file=fileplace//'maltoLyo12per-reimage-set4.traj')

 ... operation....

close (j)
end do fileLoop

在运行期间,我希望代码一次打开每个文件并在完成计算后关闭它们。但是上面的代码会一次打开所有文件,计算完成后一个接一个关闭。

所以我试图改变代码如下:

fileLoop: do j = 31, 34

 OPEN(unit=j,status='old',file=fileplace//'maltoLyo12per-reimage-set1.traj')

close (j)
end do fileLoop

但是在这里我遇到了文件名的问题。每次循环运行时,文件名都不会因为文件名中的短语“set1”而改变。我希望文件名中的数字像 set1、set2、set3 等一样更改,随后文件单元编号为 31、32、33、34 等。

4

1 回答 1

8

像这样的东西:(编辑为具有单元号 31 到 34,文件名 1 到 4。)

character (len=90) :: filename

fileLoop: do j = 31, 34

 write (filename, '( "maltoLyo12per-reimage-set", I1, ".traj" )' )  j - 30
 OPEN(unit=j,status='old',file=filename)

close (j)
end do fileLoop
于 2013-04-30T03:46:12.470 回答