当某些情况发生时,如何使用消息对程序进行BREAK

时间:2012-07-25 13:31:17

标签: fortran90

当我的f90程序的一个子程序出现某些情况时,我正试图找到一种方法来执行破坏顺序。 是否有可能从中获得任何想法?代码方案如下所示:

    /
    modules
    PROGRAM
    allocate variables
    CALL subroutines for initializing variables
    ...
    do 1,max iterations
    CALL subroutine1
    CALL subroutine2
    CALL subroutine3 !--> here I have the condition
    ...
    ...
    end do

    END PROGRAM

    Subroutine subroutine3 
    ...
    if (condition = true) then ! what I want to do here is to break the program printing a message saying that it is stopped because condition is true)

    end if
    end subroutine 3

    /

感谢您的帮助,

我对fortran很新,我是这个论坛的新手!

提前谢谢你,

Albert P

1 个答案:

答案 0 :(得分:3)

if (condition) stop

会立即停止您的程序。您可能更喜欢

if (condition) then
   write(*,*) 'A friendly message'
   stop
end if

如果您的编译器符合Fortran 2008标准,您甚至可以编写

if (condition) stop 'A friendly message'

但是,也许你想做的不是停止你的程序而是退出子程序,在这种情况下你会以某种可接受的方式跳到子程序的末尾。

请注意,condition=true在语法上不正确Fortran将条件值与逻辑常量.true.进行比较。这是一份任务说明。语法上正确的比较是condition == .true.,但这在语义上是有害的,只需写if (condition)表达if (condition == .true.)所做的一切。缩写形式还表明您是程序员而不是脚本小伙子。