2012-03-28 60 views
4

我有一個傳統的fortran代碼,有很多像'goto 50'這樣的語句。我想知道goto的目標是全球還是本地。我的意思是,如果多個函數有一個目標'50',goto通向哪裏。fortran goto scope

感謝您的回答。

回答

7

語句標籤(例如「50」)必須在當前的「作用域單元」中定義,該作用域基本上轉換爲goto調用所在的子例程/函數(或主程序if該呼叫在主程序中)。

因此,例如,在下面的程序,主程序和兩個子程序中包含有自己的標籤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