while structures loop control fortran fortran77

structures - if fortran



Fortran do bucle con goto interno (1)

Tengo un fragmento de Fortran77 que se ve así:

DO 1301 N=NMLK-2,2,-1 Some code... IF(NB1(N).EQ.50) GOTO 1300 Some code... IF(BS(N).EQ.0.0) GOTO 1301 some code... GOTO 1301 1300 NW(M)=NB1(N) Some code... 1301 CONTINUE

Cuando esto llega a la declaración GOTO 1301, ¿esto salta a la siguiente iteración del ciclo o sale del ciclo? Por lo que yo entiendo, la palabra clave return no hace nada, así que supongo que esto simplemente saldrá del ciclo y continuará la ejecución del código desde la etiqueta 1301, ¿es correcto?

Estoy traduciendo esto a C # y me pregunto si esto es equivalente:

for (N = NMLK; N >= 2; N--) { Some code... if (NB1[N] == 50) goto l1300; Some code... if (BS[N] == 0) return; Some code... return; l1300: NW[M] = NB1[N]; Some code... }

o si debería tener "continuar" en lugar de "devolver"?


Sí, la declaración GOTO 1301 hace que el programa salte a la siguiente iteración.

La DO label , label CONTINUE es una forma obsoleta de escribir un bloque DO ENDDO más contemporáneo. En este caso, el ciclo iterará sobre las variables especificadas en la línea DO, y la label CONTINUE línea label CONTINUE sirve como un marcador de posición " ENDDO ".