Fortran 转到范围

标签 fortran goto

我有一个遗留的 Fortran 代码,其中包含许多诸如“goto 50”之类的语句。我想知道 goto 的目标是全局的还是本地的。我的意思是,如果多个函数的目标是“50”,那么 goto 会指向哪里。

谢谢回答。

最佳答案

语句标签(例如,“50”)必须在当前的“作用域单元”中定义,它在此上下文中基本上转换为 goto 调用所在的子例程/函数(或主程序,如果调用位于主程序)。

例如,在下面的程序中,主程序和两个包含的子程序都有自己的标签 50,goto 转到“他们的”第 50 行。

program testgotos
    implicit none

    goto 50
    call second
 50 call first
    call second

contains

    subroutine first
    integer :: a = 10

    goto 50
    a = 20
 50 print *,'First: a = ', a

    end subroutine first

    subroutine second
    integer :: a = 20

    goto 50
    a = 40
 50 print *,'Second: a = ', a

    end subroutine second

end program testgotos

关于Fortran 转到范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9899587/

相关文章:

python - 有没有办法提高在 Windows 下使用 Fortran 中数组的速度,比如 Python numpy?

python - 在python中读取二进制数据文件进行分析

fortran - 如何在 Fortran 90 中刷新标准输出?

c++ - make 查找 fortran 77 文件但不查找 fortran 90 文件

c++ - 跳出 block : do destructors get called?

Java JTable 转到行错误

goto - 使用带有开关的 goto vs while(wrongchoice)。

c++ - 使用 C++ 更改 Fortran 输入文件中的变量

c++ - 错误 c2059 : syntax error: '('

loops - 标签 - break vs continue vs goto