Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [General] F77 -> F9x 
:(
    Опции темы
Cross
Дата 16.5.2009, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


информатик-аналитик
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 2.6.2006
Где: Москва

Репутация: нет
Всего: 1



Здравствуйте!

Есть у меня программа на Фортране 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



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

Это сообщение отредактировал(а) Cross - 16.5.2009, 01:35
PM MAIL ICQ Skype MSN   Вверх
FCM
Дата 16.5.2009, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



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


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

Это сообщение отредактировал(а) FCM - 16.5.2009, 13:40
PM MAIL   Вверх
Cross
Дата 16.5.2009, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


информатик-аналитик
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 2.6.2006
Где: Москва

Репутация: нет
Всего: 1



Работает надежно, но только если самостоятельно писать makefile. 

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

Код

USE common


А что нужно еще делать?
PM MAIL ICQ Skype MSN   Вверх
FCM
Дата 16.5.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



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


Это сообщение отредактировал(а) FCM - 17.5.2009, 11:44
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Fortran | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.