Functions can return arrays, for example,
INTERFACE FUNCTION funnie(ima,scal) ... END INTERFACE INTEGER, PARAMETER :: m = 6 INTEGER, DIMENSION(M,M) :: im1, im2 ... IM2 = funnie(IM1,1) ! invoke END PROGRAM FUNCTION funnie(ima,scal) IMPLICIT NONE INTEGER, INTENT(IN) :: ima(:,:) INTEGER, INTENT(IN) :: scal INTEGER, DIMENSION(SIZE(ima,1),SIZE(ima,2)) & :: funnie funnie(:,:) = ima(:,:)*scal END FUNCTION funnie
An explicit interface is mandatory for array-valued external functions.