我正在使用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等。
答案 0 :(得分: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