Фортран Гото Сфера - PullRequest
       6

Фортран Гото Сфера

4 голосов
/ 28 марта 2012

У меня есть старый код Fortran со многими утверждениями, такими как «Перейти к 50». Мне было интересно, является ли цель goto глобальной или локальной. Я имею в виду, если несколько функций имеют цель «50», к чему ведет goto.

Спасибо, что ответили.

Ответы [ 2 ]

8 голосов
/ 28 марта 2012

Метки оператора (например, «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
6 голосов
/ 28 марта 2012

Локальный.

Технически из стандарта f77 (http://www.fortran.com/fortran/F77_std/f77_std.html)

"Метки операторов имеют область действия программного модуля."

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...