Fortran do loop с внутренним переходом

У меня есть фрагмент Fortran77, который выглядит так:

    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

Когда это попадает в инструкцию GOTO 1301, это перескакивает на следующую итерацию цикла или выходит из цикла? Насколько я понимаю, ключевое слово return ничего не делает, поэтому я предполагаю, что это только выйдет из цикла и продолжит выполнение кода с метки 1301, верно ли это?

Я переводил это на С# и задаюсь вопросом, эквивалентно ли это:

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...
}

или если мне нужно "продолжить" вместо "return"?

Ответ 1

Да, оператор GOTO 1301 заставляет программу перейти к следующей итерации.

DO label, label CONTINUE - это устаревший способ написать более современный блок DO ENDDO. В этом случае цикл будет перебирать переменные, указанные в строке DO, а строка label CONTINUE используется как "ENDDO".