在 Fortran 的 if 语句中打开不同的文件
Opening different files within if statements in fortran
我是 FORTRAN 的初学者,所以也许我问的是微不足道的,但我还没有找到解决方案:我有 2 个不同的文件要读取,进行一些计算,然后将结果写入取决于输入文件的不同文件。我首先尝试了一种简单的方法:
real*4 counts,par,deg,fl
integer*2 i
character*13 input_file
WRITE(*,*) "Name of file"
READ(*,*) input_file
OPEN(3,FILE=input_file)
IF (input_file .EQ. 'filename1.dat') THEN
OPEN(4,FILE='filename1_done.dat',STATUS='NEW')
par=3.5
ELSE
OPEN(4,FILE='filename2_done.dat',STATUS='NEW')
par=2.1
END IF
i = 0
do
i = i+1
READ(3,*,END=99) counts,deg
fl = 10**(counts)*par
WRITE(4,*) counts,deg,fl
END DO
99 CONTINUE
CLOSE (3)
END
我的问题是,当 IF returns 为假时,它使用正确的 par 值执行计算,但它仍然调用输出文件 'filename1_done.dat'。即使在 IF 语句中包含循环并为输出文件使用不同的单位也不起作用。我觉得我错过了一些完全明显的东西,但无法弄清楚是什么。
PS: 我从未学习过 FORTRAN 90 的语法,但我正在努力学习。
我无法重现错误,即按预期输入 filename2.dat
时产生 filename2_done.dat
。我突然想到您看到 filename1_done.dat
是之前 运行 的结果。在这种情况下,您看不到 filename2_done.dat
的原因可能是您从未发出命令 close(4)
.
我是 FORTRAN 的初学者,所以也许我问的是微不足道的,但我还没有找到解决方案:我有 2 个不同的文件要读取,进行一些计算,然后将结果写入取决于输入文件的不同文件。我首先尝试了一种简单的方法:
real*4 counts,par,deg,fl
integer*2 i
character*13 input_file
WRITE(*,*) "Name of file"
READ(*,*) input_file
OPEN(3,FILE=input_file)
IF (input_file .EQ. 'filename1.dat') THEN
OPEN(4,FILE='filename1_done.dat',STATUS='NEW')
par=3.5
ELSE
OPEN(4,FILE='filename2_done.dat',STATUS='NEW')
par=2.1
END IF
i = 0
do
i = i+1
READ(3,*,END=99) counts,deg
fl = 10**(counts)*par
WRITE(4,*) counts,deg,fl
END DO
99 CONTINUE
CLOSE (3)
END
我的问题是,当 IF returns 为假时,它使用正确的 par 值执行计算,但它仍然调用输出文件 'filename1_done.dat'。即使在 IF 语句中包含循环并为输出文件使用不同的单位也不起作用。我觉得我错过了一些完全明显的东西,但无法弄清楚是什么。 PS: 我从未学习过 FORTRAN 90 的语法,但我正在努力学习。
我无法重现错误,即按预期输入 filename2.dat
时产生 filename2_done.dat
。我突然想到您看到 filename1_done.dat
是之前 运行 的结果。在这种情况下,您看不到 filename2_done.dat
的原因可能是您从未发出命令 close(4)
.