在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代码?提前感谢任何帮助。
谢谢
维杰
答案 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")
注意:
//
表示。您必须声明字符变量fileplace
,例如
character(len=:), allocatable :: fileplace
应该这样做。
Fortran 2003引入了标准过程GET_ENVIRONMENT_VARIABLE
,如果您的编译器实现它,您可能也会感兴趣。