ChrisO
ChrisO

Reputation: 33

Fortran 90 - I/O passing variable as filepath

This seems like it should be an easy fix, but after searching for hours I cannot find a solution.

I want to save a filepath as a character variable, then use the variable in a I/O statement. Below is my code for reading from the file defined by "filepath".

character:: filepath
filepath='c:\users\chris\...\data.txt'
open(unit=1,file=filepath,status='old',action='read',form='formatted',iostat=ierror)
    if(ierror.NE.0)then
        print*,'file cannot be opened or does not exist'
        read*,
    endif
    ......

The program compiles (gfortran compiler using NetBeans IDE), but when I run, I get the error printed to the screen.

Note 1: When I put the filepath directly into the open function as shown below, it seems to work fine

open(unit=1,file='c:\\Users\\Chris\\...\\data.txt',status='old',action='read',form='formatted',iostat=ierror)

Note 2: I have tried all variations of forward/backward, single/double slashes in the filepath variable, so I don't think that is the problem. When I print out "filepath" to the screen as a debugging mechanism (before the open function above), all is get back is "C". So for some reason, it seems I am losing the rest of the filepath. (I will leave my questions regarding what slash method is appropriate until I research it more)

I appreciate any suggestions.

Thanks, Chris

Upvotes: 3

Views: 1186

Answers (1)

eriktous
eriktous

Reputation: 6649

You've declared filepath to be a character variable of length 1. Change the declaration to something like character(80):: filepath (use a length long enough to contain the entire path).

Upvotes: 8

Related Questions