当我的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
答案 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.)
所做的一切。缩写形式还表明您是程序员而不是脚本小伙子。