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

时间:2015-02-03 19:18:57

标签: if-statement 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返回false时,它会使用正确的par值执行计算,但它仍会调用输出文件'filename1_done.dat'。甚至在IF语句中包含循环并使用不同的单位作为输出文件也不起作用。我觉得我错过了一些完全明显的东西,但却无法弄清楚是什么。 PS:我从来没有学过FORTRAN 90的语法,但我正在尝试。

1 个答案:

答案 0 :(得分:0)

我无法重现错误,即在被问及生成filename2.dat时按预期键入filename2_done.dat。我突然想到你在早期的跑步中看到了filename1_done.dat。在这种情况下,您没有看到filename2_done.dat的原因可能是您从未提供命令close(4)