Type, DIMENSION( : ) :: paramName ! One dimensional array Type, DIMENSION( : , : ) :: paramName ! Two dimensional array And so on... |
SUBROUTINE FuncWithMatrixParam( A ) IMPLICIT NONE REAL, DIMENSION( : ) :: A integer i, j DO i = 1, SIZE(A) !! # elements in A print *, A(i), END DO print * END |
Recall that an interface is used to declare a function
Syntax to declare a function with an array parameter:
INTERFACE SUBROUTINE FuncWithMatrixParam( A ) REAL, DIMENSION( : ) :: A END SUBROUTINE END INTERFACE |
Example Program:
SUBROUTINE FuncWithMatrixParam( A ) IMPLICIT NONE REAL, DIMENSION( : ) :: A integer i print *, "Number of elements = ", SIZE(A) print * DO i = 1, SIZE(A) print *, A(i) END DO print * END ! ============================================================ PROGRAM Main REAL, DIMENSION(3) :: A = (/ 111, 222, 333 /) integer i INTERFACE SUBROUTINE FuncWithMatrixParam( A ) REAL, DIMENSION( : ) :: A END SUBROUTINE END INTERFACE CALL FuncWithMatrixParam( A ) END |
SUBROUTINE FuncWithMatrixParam( A ) IMPLICIT NONE REAL, DIMENSION( : , : ) :: A integer i, j DO i = 1, SIZE(A,1) !! # rows in A DO j = 1, SIZE(A,2) !! # columns in A print *, A(i,j) END DO print * END |
Example Program:
SUBROUTINE FuncWithMatrixParam( A ) IMPLICIT NONE REAL, DIMENSION( : , : ) :: A integer i, j DO i = 1, SIZE(A,1) DO j = 1, SIZE(A,2) print *, A(i,j) END DO END DO print * END ! ============================================================ PROGRAM Main REAL, DIMENSION(2,3) :: A DATA A/ 1, 2, 3, 4, 5, 6/ integer i INTERFACE SUBROUTINE FuncWithMatrixParam( A ) REAL, DIMENSION( : , : ) :: A END SUBROUTINE END INTERFACE CALL FuncWithMatrixParam( A ) END |