In loop su nomi di file variabili

Sto usando Fortran per fare calcoli su un enorme set di dati che è stato diviso in molti file. I nomi dei file sono:

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

Il codice che ho scritto per fare il calcolo è il seguente:

 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 

Durante la corsa voglio che il codice apra ogni file alla volta e li richiuda dopo il calcolo del completamento. Ma il codice sopra riportato aprirà tutti i file contemporaneamente e li chiuderà uno dopo l’altro al termine del calcolo.

Così ho provato a modificare il codice qualcosa come di seguito:

 fileLoop: do j = 31, 34 OPEN(unit=j,status='old',file=fileplace//'maltoLyo12per-reimage-set1.traj') close (j) end do fileLoop 

Ma qui sto affrontando un problema con il nome del file. Ogni volta che si esegue il ciclo, il nome del file non cambia a causa della frase “set1” nel nome del file. Voglio che il numero nel nome del file cambi come set1, set2, set3, ecc., Successivamente con l’unità numero 31,32,33,34, ecc.

Qualcosa del genere: (modificato per avere numeri di unità da 31 a 34, nomi di file da 1 a 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