Fortran Write Path - Change File Paths

  • Context: Fortran 
  • Thread starter Thread starter shade rahmawati
  • Start date Start date
  • Tags Tags
    Fortran Path
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 2K views
shade rahmawati
Messages
6
Reaction score
1
Hello,

I have write a fortran code to write several file, like this

CHARACTER(len=12) :: FNAME
INTEGER::ST

DO 100 ST=1,12
DO KC=1,4 !number of layer
IF(ST.EQ.1) WRITE (FNAME,10)KC
IF(ST.EQ.2) WRITE (FNAME,11)KC
IF(ST.EQ.3) WRITE (FNAME,12)KC
IF(ST.EQ.4) WRITE (FNAME,13)KC
IF(ST.EQ.5) WRITE (FNAME,14)KC
IF(ST.EQ.6) WRITE (FNAME,15)KC
IF(ST.EQ.7) WRITE (FNAME,16)KC
IF(ST.EQ.8) WRITE (FNAME,17)KC
IF(ST.EQ.9) WRITE (FNAME,18)KC
IF(ST.EQ.10) WRITE (FNAME,19)KC
IF(ST.EQ.11) WRITE (FNAME,20)KC
IF(ST.EQ.12) WRITE (FNAME,21)KC
WRITE(6,*)FNAME
OPEN(1,FILE=FNAME)

CLOSE(1)
END DO
10 FORMAT('XY01UA',I2.2,'.DAT')
11 FORMAT('XY02UA',I2.2,'.DAT')
12 FORMAT('XY03UA',I2.2,'.DAT')
13 FORMAT('XY04UA',I2.2,'.DAT')
14 FORMAT('XY05UA',I2.2,'.DAT')
15 FORMAT('XY06UA',I2.2,'.DAT')
16 FORMAT('XY07UA',I2.2,'.DAT')
17 FORMAT('XY08UA',I2.2,'.DAT')
18 FORMAT('XY09UA',I2.2,'.DAT')
19 FORMAT('XY10UA',I2.2,'.DAT')
20 FORMAT('XY11UA',I2.2,'.DAT')
21 FORMAT('XY12UA',I2.2,'.DAT')
100 CONTINUE
STOP
ENDThose codes are works fine.
I only want to know, how to change all of this files' path to another folder inside the main program folder.

Thanks in advance,
Shade
 
on Phys.org
Add another character variable containing the path, then concatenate both when opening:
Fortran:
CHARACTER(len=80) :: PATH
PATH = "./subfolder/"

open (1,FILE=trim(PATH)//FNAME)
The use of trim is necessary if PATH has a length greater than the actual path name.

Note that, for better practice, the series of if statements should be replace by a select case. Your program could also be more readable by incorporating the format inside the write statements, e.g., use
Fortran:
WRITE (FNAME,"('XY01UA',I2.2,'.DAT')") KC
instead of
Fortran:
WRITE (FNAME,10)KC
! lots of code
10 FORMAT('XY01UA',I2.2,'.DAT')
 
  • Like
Likes   Reactions: shade rahmawati
DrClaude, you save the day! Thank you very much. Now it's all good.