Документация компилятора Intel Fortran говорит мне, что EXTERNAL несовместим с DIMENSION, что примерно то, что говорит вам ваш компилятор.Я быстро взглянул на стандарт Fortran 2003, но не смог однозначно истолковать его по этому вопросу - поэтому я согласен с Intel и утверждаю, что то, что вы пытаетесь сделать, нестандартно.
Вы, конечно, можете писать функции, которые возвращают массивы.
Мне немного странно, что вы написали функцию EIGENVALUES, а затем пытаетесь объявить ее ВНЕШНЕЙ.Обычно я помещаю определения своих функций либо в раздел CONTAINS внутри более крупного программного модуля, либо в МОДУЛЬ, который использует вызывающий модуль.Ни в том, ни в другом случае мне не нужно объявлять что-либо ВНЕШНЕЕ.
Где источник EIGENVALUES по сравнению с источником вызывающей программы?