Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2012, 19:20   #21
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Melfa Посмотреть сообщение
И снова здравствуйте!
И Вас туда же!

Цитата:
Сообщение от Melfa Посмотреть сообщение
С простой программкой у меня все получилось.
Поздравляю!

Цитата:
Сообщение от Melfa Посмотреть сообщение
Теперь возник вопрос, что делать с COMMON-блоками?
На фортрановские COMMON-блоки в таких задачах приходится обращать внимание только если в них находятся переменные (массивы), которые нужны И в другом языке. Если у Вас таковых переменных нет - вообще можете про COMMON-ы забыть.

Цитата:
Сообщение от Melfa Посмотреть сообщение
или от них нужно просто избавляться, и делать из 9 подпрограмм одну большую?
Ну, COMMON-блоки и количество подпрограмм никак не связаны друг с другом Подозреваю, что да, Вам нужны все 9 подпрограмм. Всё, из чего автономный фортрановский exe-шник лепился, всё то и здесь понадобится. Только головной модуль как SUBROUTINE нужно будет оформить.
Vago вне форума Ответить с цитированием
Старый 13.04.2012, 20:37   #22
Melfa
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 14
По умолчанию

Просто мне мой научный рыководитель сказал, что с этим могут быть большие проблемы. Насколько я понимаю COMMON-ы нужны для обмена данными между подпрограммами?...
Цитата:
На фортрановские COMMON-блоки в таких задачах приходится обращать внимание только если в них находятся переменные (массивы), которые нужны И в другом языке.
По ходу пьесы так и есть... можно ли где-нибудь почитать про это все дело более подробно?
Melfa вне форума Ответить с цитированием
Старый 13.04.2012, 21:44   #23
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Melfa Посмотреть сообщение
Просто мне мой научный рыководитель сказал, что с этим могут быть большие проблемы.
Ну, большие - не большие, но таки могут.

Цитата:
Сообщение от Melfa
Насколько я понимаю COMMON-ы нужны для обмена данными между подпрограммами?...
Насчёт их "нужности" - это спорный вопрос Точнее будет сказать: "COMMON-ы используются для обмена данными между подпрограммами".

Цитата:
Сообщение от Melfa
можно ли где-нибудь почитать про это все дело более подробно?
Понимаете какая штука... На том уровне, на котором Вы оказались, чтобы этим без страха пользоваться, нужно хоть чуть-чуть знать архитектуру машины. Представление данных разных типов, выравнивание, размещение массивов в ОП, передача по адресу / по значению... Из Си фортрановская общая область достаётся элементарно. Про Паскаль - понятия не имею. Попробуйте в Гугле "FORTRAN Pascal mixed-language programing"...

Цитата:
Сообщение от Melfa
По ходу пьесы так и есть...
Сколько у Вас параметров, оказавшихся в COMMON-ах, к которым Паскаль должен получить доступ (при вызове и перед возвратом)? Вы раньше говорили, что там связь по данным довольно тоненькая...

ADDED 21:01 CET:
Собственно, зачем я спросил "сколько". Если, чтобы пересчитать к-во таких параметров, достаточно пальцев на руках, то можно сделать вот что.

Предположим, шапка оригинального Фортрана выглядит где-то так:
Код:
      PROGRAM P
         ...
         COMMON /BL1/ A, B, C, ... ещё стопиццот переменных .., Z
         COMMON /BL2/ ALPHA, BETA, GAMMA, ...ещё мильон имён .., OMEGA
         COMMON /BL3/ N, M, K 
         ...
Предположим, что теперь из Паскаля в Фортран нужно передать значения A (REAL*4), BETA (REAL*4), N (INTEGER*4), а по завершении работы Фортрана, забрать оттуда Z (REAL*4).

Делаете:
Код:
      SUBROUTINE P( A_FOO, BETA_FOO, N_FOO, Z_FOO )
         REAL A_FOO, BETA_FOO, Z_FOO
         INTEGER N_FOO
         ...
         COMMON /BL1/ A, B, C, ... ещё стопиццот переменных .., Z
         COMMON /BL2/ ALPHA, BETA, GAMMA, ...ещё мильон имён .., OMEGA
         COMMON /BL3/ N, M, K 

C       ДО первого выполнимого оператора!
         A = A_FOO
         BETA = BETA_FOO
         N = N_FOO
         ...
         ...
         ...
         Z_FOO = Z
         RETURN
      END
Если среди таких параметров оказывается массив, ну - копируете массив, а не просто переменную...

После чего продолжаете жить, как жили, не заморачиваясь существованием в этом мире такой штуки, как фортрановская общая область.

Последний раз редактировалось Vago; 13.04.2012 в 23:01.
Vago вне форума Ответить с цитированием
Старый 13.04.2012, 23:13   #24
Melfa
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 14
По умолчанию

Цитата:
Вы раньше говорили, что там связь по данным довольно тоненькая...
Про COMMON-ы Вы меня раньше не спрашивали а об их существовании и то что они из себя представляют узнала совсем недавно...
Вот кусочек программы, так это все приблизительно выглядит и в других блоках
Код:
DIMENSION DGLAT(12),DHLAT(12),DKLAT(12),DLLAT(12),DTLAT(12)
      COMMON /LOVE/ DOM0, DOMR, DGLAT, DGR DHLAT, DHR, DKLAT, DKR, DLLAT, DLR,
     1 DTLAT,DTR
      DATA CENDH/'C*********'/
      DATA CMODEL/'DOODSON 1921 ','CTED 1973    ','TAMURA 1987  ',
     1            'BUELLESF.1985'/
      IF(IPRINT.EQ.0) GOTO 10
      WRITE(IUN6,7001) CMODEL(IMODEL+1)
      WRITE(*,7001)    CMODEL(IMODEL+1)
   10 CONTINUE
Melfa вне форума Ответить с цитированием
Старый 13.04.2012, 23:25   #25
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Ещё раз, медленно...

Если автономная программа на Фортране отлажена, работает, даёт правдоподобные результаты и не ломается, то Вы можете смотреть на неё как на очень тёмно-серый ящик, не забивая себе голову количеством подпрограмм, количеством и структурой COMMON-блоков и даже возможным наличием операторов EQUIVALENCE. Всё это - "внутрифортрановские" проблемы, уже давно решённые автором (Царствие ему Небесное!).

Ваша проблема - определиться: что из описанного в этом фрагменте теперь должно стать доступным для Паскаля?
Vago вне форума Ответить с цитированием
Старый 13.04.2012, 23:49   #26
Melfa
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 14
По умолчанию

Мне нужно все это осмыслить некоторое время
На данном этапе спасибо огромное!
Melfa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание fortran dll для c++ Davlet M Помощь студентам 31 06.11.2011 10:34
Delphi Fortran DLL передача процедуры в качестве параметра gimlis Помощь студентам 1 23.03.2011 22:52
создание fortran dll для c++ Davlet M C++ Builder 3 28.02.2011 11:45