Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Fortran > [General] F77 -> F9x


Автор: Cross 16.5.2009, 01:34
Здравствуйте!

Есть у меня программа на Фортране 77 написанная... (не мной)
Мне надо эту программу переделать под Фортран 90.
Я использую Эклипс и компилятор gfortran.

Так вот при компиляции выдается одна ошибка:

Код

krd_dat.o:krd_dat.f90:(.text+0x1e71): undefined reference to `r0grr_'


Вот отрывок из файла krd_dat.f90

Код

        do 22 j=i,lt
        k=k+1
   22  dl_sv_krd(k)=nint(r0grr(i,j,Nst0,Numb_run)*200)-100


Переменная r0grr определяется в common-блоке:

Код

REAL, DIMENSION(4,4,1,6) :: r0grr, CORNUM



Насколько я понимаю программа видит эту переменную как модуль? 
И что делать???

Автор: FCM 16.5.2009, 13:35
По такой отрывочной информации трудно о чем-то судить.
Как именуется соответствующий COMMON-блок?
Во всех ли программных единицах, где он объявлен, определены (указан тип и т.п.) его компоненты?


PS/
Eclipse (+ Photran?) + gfortran  -  насколько надежно это работает ? 

Автор: Cross 16.5.2009, 15:59
Работает надежно, но только если самостоятельно писать makefile. 

В начале подпрограммы  подключаю common-блок как модуль :

Код

USE common


А что нужно еще делать?

Автор: FCM 16.5.2009, 16:13
COMMON- блоки не подключают как модуль (т.е. с помощью USE).  Но модули можно использовать вместо COMMON-блоков.

Например, если необходимо, чтобы в нескольких программных ед-цах были доступны некоторые REAL(8)-переменные A и B , причем не через параметры процедур. то можно поступить 2-мя способами:
1) либо в каждой программной ед-це в разделе описаний использовать инструкции

Код

COMMON /BL1/  A, B
REAL(8)   A, B



2) либо создать в рамках проекта исходник с модулем, например по имени MOD1 следующего содержания
Код

MODULE MOD1

  REAL(8)  A, B

END MODULE 


и включать его в каждую программную ед-цу, где нужны  A, B инструкцией

Код

USE MOD1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)