Fortran alcance de vista
goto (2)
Las etiquetas de las declaraciones (p. Ej., "50") deben definirse dentro de la "unidad de alcance" actual, que básicamente se traduce en este contexto a la subrutina / función en la que se encuentra la llamada goto (o el programa principal, si la llamada está el programa principal).
Entonces, por ejemplo, en el siguiente programa, el programa principal y las dos subrutinas contenidas tienen su propia etiqueta 50, y los gotos van a "su" línea 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
Tengo un código Fortran heredado con muchas afirmaciones como ''goto 50''. Me preguntaba si el objetivo de goto es global o local. Quiero decir, si múltiples funciones tienen un objetivo ''50'', ¿a dónde conduce el goto?
Gracias por responder.
Local.
Técnicamente del estándar f77 ( http://www.fortran.com/fortran/F77_std/f77_std.html )
"Las etiquetas de declaración tienen el alcance de una unidad de programa".