Я работаю над фрагментом устаревшего кода F77 и пытаюсь его преобразовать в эквивалентный код F90. Я столкнулся с этими строками ниже и мог бы сообщить , если мое преобразование верное?Преобразование инструкции Go-to из FORTRAN 77 в Fortran 90
Fortran 77 код:
Subroutine area(x,y,z,d)
do 15 j=1,10
if (a.gt.b) go to 20
15 CONTINUE
20 Statement 1
Statement 2
Statement 3
end subroutine
Я попытался преобразовать его в F90 и придумал, как показано ниже:
Subroutine area(x,y,z,d)
dloop: do j=1,10
if (a>b) then
statement 1
statement 2
statement 3
else
write(*,*) 'Exiting dloop'
exit dloop
end if
end do dloop
end subroutine
Может кто-нибудь посоветовать, если эта методика является правильным? По моим результатам я не получаю ожидаемых результатов. Таким образом, потенциальная проблема может быть связана с моей логикой.
Пожалуйста, если вы сделаете усилие, чтобы модернизировать код, использовать некоторые отступы, в противном случае я не вижу смысла беспокоить с перевод. –
Стоит также отметить: это уже код F90. – francescalus
Чтобы убедиться, что ничего не пропало, следует упомянуть операторы, которые изменяют 'a' или' b', чтобы заставить оператор 'if' в конечном итоге получить' .true.'; Вы можете вставить только что-то вроде 'сделайте некоторые вычисления' в свой пример кода – innoSPG