2009-10-20 2 views
0

Каковы необходимые условия, которые необходимо выполнить для переноса кода fortran с электростанции на компилятор fortran (2003)?Портирование с электростанции (4) на компилятор intel fortran (11/2003)

Что я наблюдал, на электростанции все переменные рассматриваются как глобальные переменные (даже локальные переменные). где, как и в Intel fortran (2003), они имеют разную область для локального и глобального. Поэтому мне нужно сделать все локальные переменные зловещими. Есть ли опция (из свойств), чтобы сделать все локальные переменные глобальными в fortran 2003. Поскольку в моем коде есть переменные переменных. Вместо того, чтобы назначать все локальные переменные глобальным (означает в COMMON-блоке), может ли кто-нибудь предложить хорошее решение для этого?

Помимо этого, мне нужно выполнить любые другие проблемы при переносе кода с PowerStation на компилятор Intel fortran (11/2003)?

ответ

0

Я не знаю этих двух компиляторов специально, но было бы очень странно, если бы вам пришлось поместить все ваши переменные в общие блоки. Каковы доказательства того, что все переменные глобальны? Возможная проблема с локальными переменными в подпрограммах (подпрограммах и функциях) с более старыми компиляторами по сравнению с более новыми компиляторами заключается в том, сохраняется ли значение переменной во всех вызовах подпрограммы. Стандарт Fortran гарантирует это поведение, если переменная объявлена ​​с атрибутом «save». Некоторые старые компиляторы сделали все переменные постоянными (статическая память), независимо от того, использовалось ли «сохранение». Это может привести к ошибкам, когда старые программы переносятся на более новые компиляторы, если программист опустил «save». Многие новые компиляторы предоставляют возможность компиляции, чтобы сделать все переменные постоянными (например,/Qsave с текущим компилятором Intel Fortran). Или вы можете добавить «сохранить» в каждую подпрограмму - «сохранить» без переменных сделает все переменные постоянными.

0

Каковы необходимые условия, которые необходимо соблюдать при переносе кода fortran с электростанции в компилятор fortran (2003)?

Fortran Powerstation - это просто компилятор. Так же есть и Visual Fortran от Intel.
Хотя fortran - это язык. Несмотря на то, что оба из вышеперечисленных имеют некоторые нестандартные расширения поставщиков, если вы придерживаетесь стандарта, у вас не должно возникнуть проблем с переносом (стандартный компилятор fortran77 должен компилироваться без ошибок в современных новейших компиляторах).

Таким образом, проблема возникает, только если вы использовали некоторые нестандартные, специфичные для MS вещи. Который никому не может действительно помочь вам, не видя какого-то реального кода.

То, что я наблюдал, на электростанции все переменные рассматриваются как глобальные переменные (даже локальные переменные). где, как и в Intel fortran (2003), они имеют разную область для локального и глобального. Поэтому мне нужно сделать все локальные переменные глобальными.

Uhmm, no. Что я имею в виду, вы можете сказать, что в fortran есть «глобальные» и «локальные» переменные (хотя они так не называются), но я заверяю вас, что они правильно обрабатываются и оба компилятора. Я использовал оба, FPS совсем недавно (я все еще, возможно, его где-то установил), и они рассматриваются так, как они должны быть.

Есть ли какой-либо вариант (из свойств), чтобы сделать все локальные переменные глобальными в fortran 2003. Так как в моем коде есть переменные переменных. Вместо того, чтобы назначать все локальные переменные глобальным (означает в COMMON-блоке), может ли кто-нибудь предложить хорошее решение для этого?

Лично, если вы можете, я бы избегал использования ОБЩИХ блоков. Они хороши, но в большинстве ситуаций их можно избежать.

Помимо этого, мне нужно будет выявить любые другие проблемы при переносе кода с PowerStation на компилятор Intel fortran (11/2003)?

Переименование библиотек и модулей.

Линейка компиляторов Intel - это потомок MS, поэтому это действительно «естественный» способ. Однако, не видя реальных данных, трудно догадаться об этом и дать общие рекомендации.


p.s. Однако некоторые «общие советы» можно найти на Intel's sofware forums, а также с массой других пользователей. Они в основном связаны с переходом от CVF к IVF, но я думаю, вы могли бы найти пользователя FPS время от времени. Хотя, повторяю, fortran - очень стандартизированный язык. И как таковой, очень портативный. Переход от одного компилятора к другому не должен представлять трудности с учетом уже сказанного.

Смежные вопросы