С Новым годом! Форум программистов, компьютерный форум, киберфорум
Fortran
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
WH
1581 / 809 / 192
Регистрация: 10.09.2013
Сообщений: 3,209
Записей в блоге: 3
1

Конвертация Fortran-77 в Fortran-90

18.08.2019, 01:51. Показов 2232. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Попался полезный on-line ресурс , позволяющий конвертировать код фортрана 77 в код 90-го формата. По крайней мере на простых примерах это срабатывает.

Пример конвертации программы ASGOR (решение СЛАУ). Не совсем полностью, но не плохо.

Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
      SUBROUTINE ASG0R(A,B,X,N,P)
      implicit none
      DIMENSION A(N,N),B(N),X(N)
      INTEGER N,P,F,L,M,I,J,K
      REAL A,B,X,S,R,W
      IF(N.GT.1) GO TO 15
      IF(N.LE.0) GO TO 10
      X(N)=B(N)/A(N,N)
      GO TO 10
   15 IF(P.NE.1) GO TO 4
      F=0
    1 F=F+1
      S=1./A(F,F)
      L=F+1
      DO 2 I=L,N,1
    2 A(I,F)=-(S*A(I,F))
      DO 3 J=L,N,1
      DO 3 I=L,N,1
    3 A(I,J)=A(I,J)+A(F,J)*A(I,F)
      IF(L-N) 1,4,4
    4 DO 5 I=1,N
    5 X(I)=B(I)
      M=N-1
      DO 6 J=1,M
      W=X(J)
      K=J+1
      DO 6 I=K,N
    6 X(I)=X(I)+A(I,J)*W
      X(N)=X(N)/A(N,N)
      IF(N.EQ.1) GO TO 10
      K=N
      DO 9 I=1,M
      R=0.0
      L=K-1
      DO 8 J=K,N
    8 R=R+A(L,J)*X(J)
      K=N-I
    9 X(K)=(X(K)-R)/A(K,K)
   10 RETURN
      END
сконвертировалось в такой код

Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
!*==ASG0R.spg  processed by SPAG 6.72Dc at 23:43 on 17 Aug 2019
      SUBROUTINE ASG0R(A,B,X,N,P)
      IMPLICIT NONE
!*--ASG0R4
      DIMENSION A(N,N) , B(N) , X(N)
      INTEGER N , P , f , l , m , i , j , k
      REAL A , B , X , s , r , w
      IF ( N>1 ) THEN
         IF ( P==1 ) THEN
            f = 0
 20         f = f + 1
            s = 1./A(f,f)
            l = f + 1
            DO i = l , N , 1
               A(i,f) = -(s*A(i,f))
            ENDDO
            DO j = l , N , 1
               DO i = l , N , 1
                  A(i,j) = A(i,j) + A(f,j)*A(i,f)
               ENDDO
            ENDDO
            IF ( l<N ) GOTO 20
         ENDIF
         DO i = 1 , N
            X(i) = B(i)
         ENDDO
         m = N - 1
         DO j = 1 , m
            w = X(j)
            k = j + 1
            DO i = k , N
               X(i) = X(i) + A(i,j)*w
            ENDDO
         ENDDO
         X(N) = X(N)/A(N,N)
         IF ( N/=1 ) THEN
            k = N
            DO i = 1 , m
               r = 0.0
               l = k - 1
               DO j = k , N
                  r = r + A(l,j)*X(j)
               ENDDO
               k = N - i
               X(k) = (X(k)-r)/A(k,k)
            ENDDO
         ENDIF
      ELSEIF ( N>0 ) THEN
         X(N) = B(N)/A(N,N)
      ENDIF
      END
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.08.2019, 01:51
Ответы с готовыми решениями:

Как перекомпилировать код из Fortran 77 в Fortran 90/95?
Добрый день! У меня есть exe-файл, написанный на Fortran 77 для Windows XP 32-bit. На моём...

Из Fortran в С++
Всем привет! Встала задача по переводу кода, написанного на Fortran 77, в Visual C++. Подскажите,...

Fortran 66/Fortran 77
А может кто-то конвертировать программу на Fortran 66 на Fortran 77? P.S.: Это не шутка

Fortran notepad++
Хочу программировать в notepad++ но не могу найти компилятор пытался тут найти...

5
68 / 59 / 20
Регистрация: 19.12.2014
Сообщений: 205
18.08.2019, 08:21 2
Так это те же, кто делает FortPLus
0
WH
1581 / 809 / 192
Регистрация: 10.09.2013
Сообщений: 3,209
Записей в блоге: 3
20.08.2019, 14:03  [ТС] 3
Цитата Сообщение от MZN Посмотреть сообщение
Так это те же, кто делает FortPLus
Похоже что да. По крайней мере в качестве движка похоже используется та программа.
0
2 / 2 / 1
Регистрация: 08.02.2020
Сообщений: 215
15.02.2020, 00:40 4
Походу оно просто заменяет "с" на "!" и делает буквы маленькими Последнее непонятно зачем, Фортрану же все равно, какие там буквы. А, ну еще отступы фигурные

Как раз столкнулся с такой задачей, просто заменил символы комментария, и все заработало.
0
WH
1581 / 809 / 192
Регистрация: 10.09.2013
Сообщений: 3,209
Записей в блоге: 3
15.02.2020, 03:35  [ТС] 5
Если обратите внимание на приведенные выше пример, то увидите, что удалены многие goto. Это самое главное.
0
2 / 2 / 1
Регистрация: 08.02.2020
Сообщений: 215
15.02.2020, 10:10 6
Да, действительно, не обратил внимание.
0
15.02.2020, 10:10
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.02.2020, 10:10
Помогаю со студенческими работами здесь

Учебник по Fortran
Здравствуйте! Передо мной стоит задача освоить за месяц, хотя бы очень поверхностно, Fortran. Я...

Настройка fortran
Ситуация такая. Запускается файлик с раширением .for из far commander двойным кликом он у меня...

Fortran,IMLS
Помогите пожалуйста, опять прекрасный Фортран. Необходимо чтобы программа проработала секунд...

Fortran на Windows 7-10
Доброго времени суток, обращаюсь к вашему сообществу с таким вопросом. Научный руководитель задал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru