Обратите внимание, что руководство, на которое вы ссылаетесь, очень устарело. Он имеет GCC 3, поэтому он действителен для g77
не для gfortran
. Последняя версия находится здесь https://gcc.gnu.org/onlinedocs/gfortran/RENAME.html
Если требуется переносимость (от компилятора к компилятору), не используйте эту процедуру вообще, но вызывайте ОС для этого. Это будет отличаться для разных ОС. Например, на Linux
call EXECUTE_COMMAND_LINE('mv ' // trim(old) // ' ' // trim(new))
или SYSTEM()
вместо этого, если EXECUTE_COMMAND_LINE()
на старых компиляторов.
Побочный эффект - это действие переименования файлов. Нормальные внутренние функции чисты, и они (в основном) возвращают один и тот же ответ для одного и того же входа и не меняют никакого внешнего состояния. Побочным эффектом является любое действие, которое изменяет какое-либо внешнее состояние в дополнение к возврату возвращаемого значения функции.
Обратите внимание, что форма подпрограммы также имеет те же побочные эффекты. Но это не проблема. Ожидается, что подпрограммы будут иметь побочные эффекты.
Это по той же причине, почему RANDOM_NUMBER()
является подпрограммой. Он имеет побочные эффекты изменения состояния случайного генератора. Нестандартная функция RAND()
уродлива, потому что это функция с побочными эффектами.
Спасибо! Действительно, было не так просто понять, что побочный эффект не является чем-то противоположным «главному эффекту». :)) – Roux