BEGIN_PROVIDER [ integer, t ] t = u1+v+4 END_PROVIDER BEGIN_PROVIDER [integer,w] w = d5+3 END_PROVIDER BEGIN_PROVIDER [ integer, v ] v = u2+w+2 END_PROVIDER BEGIN_PROVIDER [ integer, u1 ] integer :: fu u1 = fu(d1,d2) integer :: n, m n=3 do i=1,n print *, i enddo m=2 do i=1,m print *, i enddo PROVIDE u2 END_PROVIDER BEGIN_PROVIDER [ integer, u2 ] integer :: fu u2 = fu(d3,d4) END_PROVIDER integer function fu(x,y) integer :: x,y fu = x+y+1 end function