Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement 在fortran中的if语句中打开不同的文件_If Statement_Fortran - Fatal编程技术网

If statement 在fortran中的if语句中打开不同的文件

If statement 在fortran中的if语句中打开不同的文件,if-statement,fortran,If Statement,Fortran,我是FORTRAN的初学者,所以我的问题可能很简单,但我还没有找到解决方案:我有两个不同的文件要读,做一些计算,然后根据输入文件将结果写在不同的文件中。我尝试了一种简单的方法: real*4 counts,par,deg,fl integer*2 i character*13 input_file WRITE(*,*) "Name of file" READ(*,*) input_file OPEN(3,FIL

我是FORTRAN的初学者,所以我的问题可能很简单,但我还没有找到解决方案:我有两个不同的文件要读,做一些计算,然后根据输入文件将结果写在不同的文件中。我尝试了一种简单的方法:

       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

我的问题是,如果返回false,它将用PAR的正确值执行计算,但它仍然调用输出文件“FielNeMa1On.DAT”。即使将循环包含在IF语句中并对输出文件使用不同的单位也不起作用。我觉得我遗漏了一些非常明显的东西,但我不知道是什么。


PS:我从未学习过FORTRAN 90的语法,但我正在尝试。我无法再现错误,即当被要求时键入
filename2.dat
,如预期的那样生成
filename2\u done.dat
。我突然想到,您看到的
filename1\u done.dat是先前运行的结果。在这种情况下,您没有看到
filename2\u done.dat
的原因可能是您从未发出命令
close(4)

,这确实是问题所在,非常感谢。我知道这很简单,很高兴我能帮上忙。