Я не эксперт, но я думаю, что когда вы используете атрибут PASS, вы должны указать передаваемый аргумент.По крайней мере, так я это использовал.например
... pass(self) :: foo
function foo(self, baz) return(bar)
type(mytype), intent(in) :: self
real, intent(in) :: baz
...
Тогда способ вызова этой процедуры будет следующим: instanceOfMyType%foo(baz)
Cheers.