循环变量文件名

时间:2013-04-30 02:25:30

标签: fortran fortran90

我正在使用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等。

1 个答案:

答案 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