Если вы неправильно описываете свои подпрограммы (подпрограммы и функции) для вызывающей программы, компилятор может некорректно вызывать их. Fortran компилирует каждый модуль отдельно, поэтому по умолчанию компилятор не «знает» о характеристиках других подпрограмм. Существует несколько способов описать / объявить подпрограмму в Fortran 90/95/2003.
Самый простой и лучший способ - поместить ваши подпрограммы в модуль, а затем «использовать» этот модуль в вызывающей программе. Это автоматически делает интерфейс известным компилятору и позволяет компилятору проверять согласованность фактических аргументов (в вызове) и фиктивных аргументов в подпрограмме. Также будет известен тип возвращаемого значения функции. Различные подпрограммы в модуле имеют свои интерфейсы, известные друг другу.
Вы также можете написать «интерфейс», содержащий объявление подпрограммы, которое соответствует объявлениям фактической подпрограммы. (Этот метод может быть очень похож на стиль включения заголовочных файлов в C.) Этот метод более трудоемкий и подвержен ошибкам, потому что вы должны вручную поддерживать согласованность между реальной подпрограммой и интерфейсом всякий раз, когда вносятся изменения. Метод интерфейса полезен, когда у вас нет кода для подпрограммы или подпрограмма написана на языке, отличном от Fortran.
Или вы можете просто объявить имя функции, чтобы указать тип возвращаемого значения функции, но это не даст вам никакой проверки аргументов. На мой взгляд, этот метод слабее, поскольку согласованность аргументов проверки компилятором устраняет основной класс ошибок программирования.