FORTRAN Open Arbitrary number of files in Do Loop

  • Fortran
  • Thread starter minger
  • Start date
  • #1
minger
Science Advisor
1,495
1

Main Question or Discussion Point

I have a quick question that I've always wondered exactly how to do but never needed to. Well of course now I do. I have a DO loop that loops an arbitrary number of times. I would like to open a file each time it comes around, using the DO loop iterator as part of the filename. Ideally, it would look something like....
Code:
n = 5
DO i=1,n
 OPEN(11,file='input000',i,'.fmt',form='formatted')
 blah blah blah
 CLOSE(11)
END DO
So, if anyone knows how to parse the variable into that text string, I would appreciate it. Thanks,
 

Answers and Replies

  • #2
365
0
I do not know what version of Fortran you run, but this example should be close to what you can do.

Code:
      IMPLICIT INTEGER(I-N), REAL*8(A-H,O-Z)
      N=5
      CHARACTER *10 FN
      DO 5 I=1,N
      WRITE(FN,10)I
      WRITE(6,*)FN
      OPEN(1,FILE=FN)
      CLOSE(1)
    5 CONTINUE
   10 FORMAT(5HINPUT,I3.3)
      STOP
      END
The screen output looks like this, and the corresponding files have been opened (and closed):
Code:
INPUT001
INPUT002
INPUT003
INPUT004
INPUT005
 
  • #3
minger
Science Advisor
1,495
1
BTW, I'm using FORTRAN90. I get that and it'll get me 90% there. How can I then add a '.fmt' as a file extension? I imagine the period needs some special character designation?

Thanks,
 
  • #4
365
0
You only have to add the suffix at the end of the format statement, and don't forget to inccrease the length of FN to 12, as follows:

Code:
      IMPLICIT INTEGER(I-N), REAL*8(A-H,O-Z)
      N=5
      CHARACTER *12 FN
      DO 5 I=1,N
      WRITE(FN,10)I
      WRITE(6,*)FN
      OPEN(1,FILE=FN)
      CLOSE(1)
    5 CONTINUE
   10 FORMAT('INPUT',I3.3,'.FMT')
      STOP
      END
I believe the translation to F90 should be trivial.
 
  • #5
minger
Science Advisor
1,495
1
Beautiful; working. Thanks a bunch!
 
  • #6
365
0
Glad that everything works out!
 
  • #7
Hi everyone

I have got similar problem..

How can i write to an existing file without deleting previous data.

so basically i want to add new info every time i run the program.


Thanks
 
  • #8
minger
Science Advisor
1,495
1
Try using
Code:
ENDFILE
http://docs.hp.com/en/B3908-90002/ch08s06.html?btnNext=next%A0%BB [Broken]
 
Last edited by a moderator:
  • #9
365
0
Open the file with the keyword 'append', for example:

Code:
OPEN(1, FILE='mydata.dat', ACCESS='APPEND')
 

Related Threads for: FORTRAN Open Arbitrary number of files in Do Loop

  • Last Post
Replies
2
Views
2K
Replies
1
Views
8K
Replies
8
Views
13K
Replies
20
Views
32K
Replies
6
Views
881
Replies
1
Views
717
Replies
3
Views
1K
Top