Ошибка: две основные программы в программе f77 - PullRequest
0 голосов
/ 13 июня 2018

Я прочитал газету с кодом F77 Fortran.Я хочу запустить программу и пройти через нее, чтобы я мог перенести ее на MATLAB.Однако, когда я пытаюсь запустить программу, она не работает.Я получаю следующую ошибку:

$f77 -g Algorithm634.f 
Algorithm634.f:10.72:

      INTEGER FITDEG,DIMEN,NFPOLS,NFPTS,NEPTS,NEPOLS,EVLDEG,TOPS        
                                                                        1
Algorithm634.f:142.72:

      INTEGER DIMEN,FITDEG,NFPOLS,NFPTS,EVLDEG,NEPOLS,NEPTS             
                                                                        2
Error: Two main PROGRAMs at (1) and (2)

Ясно, что мне нужно изменить код.(1) перечисленные выше генерирует данные, которые затем используются в (2).Однако я не знаком со старыми программами f77.Я не уверен, что именно нужно сделать, чтобы это изменить.

Файл Dropbox на Фортране и документы

РЕДАКТИРОВАТЬ: мне сказали не ссылаться на Dropbox.Хорошо.Вот вся программа:

https://pastebin.com/ULLLPmdL

1 Ответ

0 голосов
/ 13 июня 2018

Я скачал Algorithm634.f из вашего дропбокса.Как следует из сообщения компилятора, есть две отдельные программы, которые я создал как generate.for и driver.for.

Если вы скомпилируете и свяжете их как generate.exe и driver.exe, вы сможете запустить их.

Сначала сгенерируйте программу, как:

gFortran generate.for -o generate.exe
generate > generate.txt

, это создаст файл данных, необходимый для драйвера.

Затем используйте программу драйвера, как:

gFortran driver.for -o driver.exe
driver < generate.txt > driver.txt

Это даст некоторый вывод, который вы можете просмотреть.

(На самом деле, я изменил generate.for, включив первую исполняемую строку как:

  open (unit=16, file='gendat.txt')

затем изменил все write (6, на write (16,, чтобы вывод был записан в файл, а не перенаправлен.

Затем я изменил driver.for, включив первую исполняемую строку в виде:

  open (unit=15, file='gendat.txt')

затем изменил все read (5, на read (15,, чтобы ввод считывался из файла, а не перенаправлялся.

Изменение единиц с 5,6 на 15,16 позволяет избежать потенциальных проблем сномера зарезервированных файловых блоков в диапазоне 1: 9, которые отличаются фортЗапущенные компиляторы могут применяться.)

Я бы оставил вам подтверждение, что программа работает.Большинство компиляторов Фортрана имеют связанный «отладчик», который позволяет вам проходить через программу, так что вы можете завершить следующий этап.

code.f или code.for указывает, что компоновка кода представляет собой фиксированный код формата.Как и компиляторы F77, все компиляторы F90 + Fortran распознают этот код и должны справиться с ним.

Таким образом, решение состоит в том, чтобы разделить Algorithm634.f на 2 отдельных файла.

...