bubanoid
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору terminat0r Цитата: Наверно вам надо на доске раз 200 написать "Все переменные по умолчанию в фортране передаются по ссылке". Если вы передали в процедуру или функцию какую то переменную, то вы работаете с этой переменной а не с ее копией. Не хотите чтобы внешняя переменная менялась в процедуре,- так не меняйте ее! | Вот я вас понял, а вы меня нет. Мне НАДО менять переменную nf в процедуре. Эта переменная учитывается при расчёте функции Rho_my(x). Единственный способ передать переменную в Rho_my(x) - common block или через описание переменной nf вверху модуля (я не знаю, как правильно назвать эту область. может интерфейс модуля?). Было бы выходом передавать переменную след. образом: subroutine Rho_subra(...,nf,...) integer, intent(in) :: nf и real(8) Rho_my(x,nf) integer, intent(in) :: nf только так делать я не могу: Rho_my мне нужна именно в виде Rho_my(x), так как в программе я её интегрирую IMSL-овской процедурой. Вопрос не стоял ПОЧЕМУ переменная меняется по выходу из процедуры, а стоял ЕСТЬ ЛИ СПОСОБ сделать так, что бы она не менялась. И написав мне 200 раз на доске "Все переменные по умолчанию в фортране передаются по ссылке" вы не отвечаете на мой вопрос. Иначе я вас сразу же спрашиваю: а как НЕ по умолчанию передать переменную, чтобы по выходу из Rho_subra она не поменяла своё значение? akaGM первый способ - не катит, второй - не катит, третий (тот что изврат) - единственное, что осталось. Второй способ я попробовал, но не совсем понимаю, что это. Я мельком глянул в гугл (не вникая) и такие конструкции встречаются при необходимости создавать процедуру затем вызываемую из C. Это так? Добавлено: Vladik71 Иногда бывает, что по неосторожности какое-то "c" или "o" в названии переменной набираются кириллицей. | Всего записей: 101 | Зарегистр. 22-11-2007 | Отправлено: 20:56 12-12-2010 | Исправлено: bubanoid, 21:00 12-12-2010 |
|