Guštavo Furtado
Guštavo Furtado

Reputation: 23

Fortran Open from current directory

I am writing a fortran program and I would like to know if it is possible to open a file from the same directory where the program itself is placed.

I am using Ubuntu 12.04 BTW.

For example, if I put the compiled program at the directory "/home/username/foo" I would like the program to open the file "/home/username/foo/bar.txt" and write "Hello!" in it.

My minimal working example is the following:

program main

implicit none

open(unit=20,file="bar.txt",action="write")

WRITE(20,*) "Hello!"

close(20)

end program main

When I compile using gfortran it opens and writes in the file "/home/username/bar.txt" no matter where I put the program file.

On the other hand, when I compile it for windows (using mingw) making a .exe file and execute it in windows it does what I want, it opens the file where the executable file is placed.

[EDIT] I just found out that if I execute the program by double clicking it, it will open the file in the program directory but when I execute it from Terminal it opens at "/home/username/", so maybe is more about the way I send the command from Terminal, currently I am doing it by the following command "/home/username/foo/myprogram".

Upvotes: 2

Views: 1660

Answers (1)

Kyle Kanos
Kyle Kanos

Reputation: 3264

I too am running Ubuntu 12.04 with gfortran 4.6.3, but I do not experience this. Where ever it is that I place my executable, there is bar.txt after execution.

That said, if you want a file at a specific place, then declare a character string as follows:

character(26) :: filename
filename="/home/username/foo/bar.txt"

and then open the file as

open(unit=20, file=filename)

and you are home free.

EDIT

I just noticed your edit. I imagine that you open terminal and do not cd to the location of the executable, but run the command for execution. That would indeed cause you to always have the file open in whatever folder you are currently in.

Upvotes: 1

Related Questions