在FORTRAN中定义文件的路径

时间:2013-04-22 08:11:30

标签: fortran fortran90 fortran77

在bash中,我可以写一个简单的脚本,如下所示;在我使用环境变量“fileplace”

定义文件路径时读取文件夹中文件的内容
#!/bin/bash

fileplace="/home/vijay/data1/process-folder1/"

cat $file/file1.dat

我希望通过使用变量定义路径,在FORTRAN 90中实现相同的功能。我想这样做,因为我的文件夹位置路径很长,我想避免使用&和FORTRAN 90中长行的符号。

我尝试编写如下的简单FORTRAN 90代码进行测试。

program test_read
implicit none

open (unit=10, status="old",file="/home/vijay/data1/process-folder1/file1.dat")
read(10,*) junk
write(*,*) junk 

stop
end

如果我可以避免在FORTRAN代码中使用长路径(/ home / vijay / data1 / process-folder1 /)。 有没有可能实现这个目标?如果是,任何人都可以帮助纠正这个FORTRAN代码?提前感谢任何帮助。

谢谢

维杰

2 个答案:

答案 0 :(得分:11)

Fortran不是一个使用字符串的好语言,但这仍然是可能的。

您需要一个变量,您可以在其中存储路径。如果此路径是常量并且在编译时已知,则可以简单地编写

CHARACTER(*), PARAMETER :: fileplace = "/home/vijay/data1/process-folder1/"

然后可以使用

打开该文件
OPEN(unit=10, status="old",file=fileplace//"file1.dat")

如果要在执行期间更改路径,则必须为fileplace设置适当的长度,并在需要时对其进行相应调整:

CHARACTER(100) :: fileplace

WRITE(fileplace,*) "/home/vijay/data1/process-folder1/"
OPEN(unit=10, status="old", file=TRIM(ADJUSTL(fileplace))//"file1.dat")

函数ADJUSTL()TRIM()将字符串的内容向左移动以删除任何前导空格,然后剪切所有尾随空格。

答案 1 :(得分:7)

你可以像这样使用一些Fortran:

fileplace = "/home/vijay/data1/process-folder1/"

open (unit=10, status="old",file=fileplace//"file1.dat")

注意:

  1. 在Fortran中,字符串连接由运算符//表示。
  2. 您必须声明字符变量fileplace,例如

    character(len=:), allocatable :: fileplace

  3. 应该这样做。

    Fortran 2003引入了标准过程GET_ENVIRONMENT_VARIABLE,如果您的编译器实现它,您可能也会感兴趣。