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