Matters become easier with a F90_LOCAL EXTRINSIC:
SUBROUTINE Calc_u_like(A,B,C) INTEGER, DIMENSION(:), INTENT(IN) :: B, C INTEGER, DIMENSION(:), INTENT(OUT) :: A A = B+C END
Can use assumed-shape arrays to avoid explicitly calculating block-sizes. Fortran 90 allows zero-sized sections which is also useful.
For more information, click here