Скомпилировать из разных версий Fortran

Я новичок в Фортране. У меня есть файл, написанный на нестандартной версии Фортрана, написанный для компилятора Lahey-Fujitsu и использующий проприетарную числовую библиотеку IMSLF90 (см. мой предыдущий пост здесь). Назовем этот файл test.f. В IMSLF90 есть функция, инвертирующая матрицы. Если я закомментирую эти матричные инверсии, я смогу скомпилировать исходный код либо с ifort, либо с gfortran. У меня нет доступа к IMSLF90, и я ищу способ ввести функцию обращения матрицы из какой-нибудь библиотеки. Я попытался использовать набор инструментов, представленный на ce-fortran.com (я новичок в Fortran и делаю лучше не знаю).

Моя проблема в том, что когда я include "toolbox.f90" вверху файла и заменяю use IMSLF90 на use toolbox в файле test.f (и изменяю вычисление инверсии матрицы с .i. x на lu_invert(x)), а затем пытаюсь скомпилировать, компилятор жалуется:

ifort test.f -o test.out
toolbox.f90(21): error #5149: Illegal character in statement label field  [m]
module toolbox
^
toolbox.f90(21): error #5149: Illegal character in statement label field  [o]
module toolbox
-^
toolbox.f90(21): error #5149: Illegal character in statement label field  [d]
module toolbox
--^
toolbox.f90(21): error #5149: Illegal character in statement label field  [u]
module toolbox
---^
toolbox.f90(21): error #5149: Illegal character in statement label field  [l]
module toolbox
----^
toolbox.f90(21): error #5118: First statement in file must not be continued
module toolbox
-----^
toolbox.f90(30): error #5149: Illegal character in statement label field  [i]
implicit none
^
toolbox.f90(30): error #5149: Illegal character in statement label field  [m]
implicit none
-^
toolbox.f90(30): error #5149: Illegal character in statement label field  [p]
implicit none
--^
toolbox.f90(30): error #5149: Illegal character in statement label field  [l]
implicit none
---^
toolbox.f90(30): error #5149: Illegal character in statement label field  [i]
implicit none
----^
toolbox.f90(33): error #5149: Illegal character in statement label field  [p]
private
^
toolbox.f90(33): error #5149: Illegal character in statement label field  [r]
private
-^
toolbox.f90(33): error #5149: Illegal character in statement label field  [i]
private
--^
toolbox.f90(33): error #5149: Illegal character in statement label field  [v]
private
---^
toolbox.f90(33): error #5149: Illegal character in statement label field  [a]
private
----^
toolbox.f90(36): error #5149: Illegal character in statement label field  [r]
real*8, private :: starttime_cpu
^
toolbox.f90(36): error #5149: Illegal character in statement label field  [e]
real*8, private :: starttime_cpu
-^
toolbox.f90(36): error #5149: Illegal character in statement label field  [a]
real*8, private :: starttime_cpu
--^
toolbox.f90(36): error #5149: Illegal character in statement label field  [l]
real*8, private :: starttime_cpu
---^
toolbox.f90(36): error #5149: Illegal character in statement label field  [*]
real*8, private :: starttime_cpu
----^
toolbox.f90(39): error #5149: Illegal character in statement label field  [l]
logical, private :: tbox_seed = .true.
^
toolbox.f90(39): error #5149: Illegal character in statement label field  [o]
logical, private :: tbox_seed = .true.
-^
toolbox.f90(39): error #5149: Illegal character in statement label field  [g]
logical, private :: tbox_seed = .true.
--^
toolbox.f90(39): error #5149: Illegal character in statement label field  [i]
logical, private :: tbox_seed = .true.
---^
toolbox.f90(39): error #5149: Illegal character in statement label field  [c]
logical, private :: tbox_seed = .true.
----^
test.f(41): catastrophic error: Too many errors, exiting
compilation aborted for test.f (code 1)

Я думаю, что происходит то, что оператор include вверху по существу «записывает» код в toolbox.f90 в основной исходный код в test.f, и, поскольку они не следуют одному и тому же стандарту Фортрана, компилятор запутывается.

Как я могу это решить?


person amrods    schedule 14.08.2019    source источник
comment
Переименуйте файл в test.f90. Если вы новичок в Fortran, существует две формы исходного кода: фиксированная форма и свободная форма. Некоторые компиляторы (включая gfortran) используют расширение .f для обозначения фиксированной формы и .f90 для обозначения свободной формы. Кстати, чтобы сделать инверсию матрицы, Google LAPACK   -  person evets    schedule 14.08.2019
comment
Файл test.f имеет фиксированный формат, а toolbox.f90 — нет. Если я переименую test.f в test.f90, я все еще получаю некоторые ошибки, хотя и другие, чем раньше. Например: строки комментариев с c ошибками.   -  person amrods    schedule 14.08.2019
comment
Учитывая сообщения об ошибках, которые вы опубликовали, и комментарий к строкам комментариев, начинающимся с c. Ваш код не является ни свободной, ни фиксированной формой. Но мы не знаем, потому что вы отказываетесь публиковать код. Удачи в изучении того, как правильно писать на Фортране.   -  person evets    schedule 14.08.2019
comment
Я не вправе публиковать полное содержание test.f, но если вы видите мой предыдущий пост, упомянутый выше, stackoverflow.com/questions/57472015/, вы найдете несколько примеров строк. Спасибо за добрые пожелания, всегда ценю их.   -  person amrods    schedule 14.08.2019
comment
Звучит так, как будто test.f представляет собой какое-то странное сочетание бесплатного и фиксированного формата, но поскольку вы отказываетесь публиковать его, это очень сложно, помогите еще - можете ли вы создать другой файл, который вы можете показать и дает те же проблемы? О, и я согласен с @evets, используйте LAPACK, он бесплатный и с открытым исходным кодом и не привязывает вас к конкретному компилятору.   -  person Ian Bush    schedule 14.08.2019
comment
Если выяснится, что связанный вопрос, который я выбрал, не подходит, отредактируйте вопрос, указав более подробную информацию, и отправьте мне запрос, чтобы открыть его снова.   -  person francescalus    schedule 14.08.2019