2012-03-28 14 views
4

Ich habe einen alten Fortran-Code mit vielen Aussagen wie 'Goto 50'. Ich habe mich gefragt, ob das Ziel von goto global oder lokal ist. Ich meine, wenn mehrere Funktionen ein Ziel '50' haben, wohin führt der Goto?fortran goto Umfang

Danke für die Beantwortung.

Antwort

7

Die Anweisungsbezeichnungen (z. B. "50") müssen innerhalb der aktuellen "Scoping-Einheit" definiert werden, die in diesem Kontext im Wesentlichen in die Unterroutine/Funktion übersetzt wird, in der sich der Goto-Aufruf befindet (oder das Hauptprogramm, falls der Anruf ist im Hauptprogramm).

So zum Beispiel in dem folgenden Programm, das Hauptprogramm und beide enthaltenen Subroutinen haben ihr eigenes Label 50 und die gotos gehen, um „ihre“ Linie 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