По сути, вызов из программы или подпрограммы не должен отличаться. Действительно ли код выглядит так, без каких-либо объявлений? Это означает, что все переменные будут иметь неявные типы: переменные с именами, начинающимися с букв i-n, будут целочисленными, все остальные - действительными; это также верно для возвращаемых значений функции. Код, который вы показываете, пытается присвоить вещественное число (bar()
) целому числу (i
).
Если вы пишете новый код, всегда запускайте программы и процедуры с IMPLICIT NONE
. Это заставляет вас явно включать объявления типов для всех переменных и возвращаемых значений функций, что значительно сокращает количество ошибок.