Компилятор Intel ifort имеет параметр -gen-interfaces. Я думаю, что этот вариант делает именно то, что вам нужно. В отличие от компилятора gfortran (который, к сожалению, не имеет этой функции), ifort стоит денег. Возможно, вы сможете заставить кого-нибудь запустить ifort -gen-interfaces один раз для вашего действительно старого fortran77stuff? Я предполагаю, что код fortran77 больше не меняется, поэтому сгенерированный * __ genmod.f90 можно использовать, и его не нужно создавать снова и снова.
Альтернативой является создание модуля:
MODULE NOSTALGIA77
CONTAINS
include 'file1.f'
...
include 'fileN.f'
END MODULE NOSTALGIA77
Теперь, когда вы компилируете модуль, а не отдельные файлы, вы можете использовать функции и подпрограммы после добавления USE NOSTALGIA77 в ваш код Fortran2003, и компилятор проверит правильность ваших вызовов.
Примечание: в примере предполагается, что код fortran77 содержит только подпрограммы. Если он также содержит другие данные (BLOCK DATA и другие вещи, которые мы не хотим запоминать), модуль может быть немного сложнее сделать, потому что некоторые вещи появятся до CONTAINS, а некоторые после. Но это все еще можно сделать (и не слишком быстро).
Удачи!
Изменить:
Возможно, https://shroud.readthedocs.io/en/latest/ может вам помочь. Я провел несколько небольших тестов (см. https://shroud.readthedocs.io/en/latest/appendix-A.html). Кажется, что сработало, так это поместить несколько строк ваших файлов заголовков в файл yaml clibrary.yaml, каждой строке предшествует '-decl':
declarations:
- decl: void NoReturnNoArguments()
- decl: double PassByValue(double arg1, int arg2)
Я полагаю, этот файл yaml можно легко создать из ваши файлы заголовков с использованием sed, awk, python или любого другого языка сценариев, который вам нравится. Затем все, что вы запускаете, - это shroud clibrary.yaml, и выходит модуль fortran libray_mod, который вы можете включить, после чего все ваши функции становятся доступными, и их использование проверяется.