+1 eddy33
Ceux qui croient que le goto c'est le mal absolu sont de sombres crétins.
le goto des langages évolués correspond la plupart du temps à l'instruction en asm jmp & cie, en C, break/continue et return sont des cas particuliers de goto même si on peut l'éviter la plupart du temps.
Dans l'embarqué ou le souci d'optimisation est important, le goto permet comme l'a rappelé eddy33 de simuler une exception, d'accélerer le traitement en gagnant quelques cycles CPU.
D'ailleurs dans le kernel Linux, on fait usage (avec modération) de goto.
http://lxr.linux.no/source/fs/read_write.c
Je ne connais pas du tout le Fortran, tu peux essayer de "nettoyer" le code mais ne pars pas dans l'optique d'une chasse aux goto à tout pris, privilégie la clareté du code, l'optimisation du traitement.
Ce n'est pas l'abus de goto qui mène à la programmation spaghettis mais l'inverse 😉
Je recommande de lire l'article wikipedia sur goto avec l'argumentaire anti-goto de dijkstra et la réponse plus nuancée de Donald Knuth en liens.
http://en.wikipedia.org/wiki/GOTO