Fortran Write Path - Change File Paths

  • Context: Fortran 
  • Thread starter Thread starter shade rahmawati
  • Start date Start date
  • Tags Tags
    Fortran Path
Click For Summary
SUMMARY

The forum discussion focuses on modifying file paths in Fortran code to write files into a specific subfolder. The user, Shade, initially implemented a series of IF statements to generate file names based on a loop. DrClaude provided a solution by suggesting the addition of a CHARACTER variable for the path and using the TRIM function to concatenate the path with the file name during the OPEN statement. Additionally, DrClaude recommended replacing the IF statements with a SELECT CASE structure for improved code readability and efficiency.

PREREQUISITES
  • Understanding of Fortran programming language
  • Familiarity with CHARACTER data types in Fortran
  • Knowledge of file handling in Fortran, specifically the OPEN statement
  • Basic understanding of string manipulation functions like TRIM in Fortran
NEXT STEPS
  • Learn about Fortran SELECT CASE statements for better control flow
  • Explore advanced string manipulation techniques in Fortran
  • Investigate best practices for file handling in Fortran
  • Study the implications of using CHARACTER variables for file paths in Fortran
USEFUL FOR

This discussion is beneficial for Fortran developers, programmers working on file I/O operations, and anyone looking to enhance their coding practices in Fortran.

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
 
Technology news 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.
 

Similar threads

  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 12 ·
Replies
12
Views
3K
  • · Replies 4 ·
Replies
4
Views
4K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 2 ·
Replies
2
Views
25K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 3 ·
Replies
3
Views
7K
  • · Replies 3 ·
Replies
3
Views
4K
  • · Replies 6 ·
Replies
6
Views
5K
  • · Replies 3 ·
Replies
3
Views
2K