Fortran子程序在OPEN语句中挂起

时间:2013-11-25 17:12:35

标签: fortran fortran77

我最近开始研究现有的Fortran程序,并同时使用该语言。我写了以下子程序:

subroutine timing(yyyy, mm, dd, var, ntime, time_blocks, 
 *  time_day)

use myglobals

! ---------------------------------------------------------------------
!     Common Variables
! ---------------------------------------------------------------------    

    integer yyyy,       ! year
   *         mm,    ! month
   *         dd,    ! day
   *         ntime  ! nr of blocks for which time was measured

    real time_blocks(ntime),    
   *        time_day    
    character*4 var 

! ---------------------------------------------------------------------
!     Internal Variables
! ---------------------------------------------------------------------   

    integer ios
    integer out_unit=52

        open(unit=out_unit, file=diroutput(1:69)//'timing',
     * err=450, iostat=ios)
    450 print*, "iostat= ", iostat
    print*, "open"

    write(out_unit, format_str) yyyy, mm, dd, var, time_blocks, 
     *   time_day

    return
    end

这个子程序的目的是按照定义的格式(从我的例子中不包括格式定义)将它从程序的另一部分获得的输入写入文件。必须在第一次调用此子例程时创建该文件,然后在每次进一步调用时访问该文件以附加新信息。 diroutputmyglobals中定义的字符串。

我的问题是该程序似乎挂在OPEN语句中,即在我终止该进程之前没有任何反应。我使用几个print*,语句运行代码来查找错误,并发现错误必须在OPEN语句中。看起来很奇怪,程序什么也不做,甚至没有跳转到错误标签。

由于我是Fortran的新手,我可能会遗漏一些相当明显的东西,所以有经验的人快速浏览可能有所帮助。我确定diroutput包含有效路径。

我正在使用Linux(CentOS 5.5),我用英特尔Fortran编译器11.1编译了我的程序。

1 个答案:

答案 0 :(得分:0)

您的代码似乎从(通常)第6列中的延续字符开始,尽管包含Fortran 90的功能,但仍以固定格式编写。如果它是固定格式,则语句标签,例如450应该在第1列到第5列中。我不会立即看到为什么会导致程序挂起而不是崩溃,但我建议您解决此问题并重试。