Является ли утверждение RETURN перед END SUBROUTINE в кодах Фортрана хорошей практикой? - PullRequest
4 голосов
/ 06 ноября 2019

Является ли простая инструкция RETURN (без каких-либо аргументов) непосредственно перед END SUBROUTINE в больших устаревших кодах хорошей практикой или мы должны просто удалить ее?

Код, с которым я работаю, является большим устаревшим кодом (длянаучные вычисления), где части кода изначально были написаны на Fortran 77, а большинство новых разработок - на Fortran 95 и выше. Существует также немного вкрапленного C-кода и сценариев Python.

В руководстве разработчика Intel четко указано, что подпрограмма End уже инициирует Return: https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-end

С другой стороны, я помнюбудучи наученным в 2000-х годах, всегда полезно указывать явное выражение RETURN перед END SUBROUTINE.

Типичная структура подпрограммы упоминается следующим образом (например, Фортран Чепмена для ученых и инженеров, 4-е издание):

SUBROUTINE subroutine_name ( argument_list )
...
(Declaration section)
...
(Execution section)
...
RETURN
END SUBROUTINE [subroutine_name]

Если оператор Return (без каких-либо аргументов) не является хорошей практикой, то зачем вообще упоминать его как часть структуры, особенно за пределами «секции выполнения»? CYCLE или EXIT и т. Д. Никогда не упоминаются как часть стандартной структуры подпрограммы. Итак, почему ВОЗВРАЩЕНИЕ?

Ответы [ 2 ]

3 голосов
/ 06 ноября 2019

Как упоминает руководство Intel, это бессмысленно, поскольку оператор "end subroutine" уже обрабатывает его. Возврат полезен, если вам нужно, скажем, вернуться внутри цикла или чего-то подобного (но есть мысль, что вы должны структурировать свой поток управления таким образом, чтобы вы никогда не возвращались в середине цикла.

1 голос
/ 06 ноября 2019

Это шум. Бесполезное утверждение, которое только отвлекает от полезного кода. Неопытные люди могут задаться вопросом, почему это так.

Это похоже на STOP прямо перед END PROGRAM. Это еще хуже, потому что у него есть побочных эффектов , которые могут запутать неопытных программистов и пользователей программы.

Некоторые очень старая версия Фортрана (первая66) может потребоваться, но это предыстория вычислений.

...