Fortran 90 extiende las posibilidades de declarar argumentos dummy en los procedimientos para darle el formato adecuado a los arreglos que pasan como parámetros.
SUBROUTINE lee_matriz(m, i_max, j_max)
IMPLICIT NONE
INTEGER i_max, j_max
REAL, DIMENSION(i_max,j_max) :: m
READ*, m
END
También existen las declaraciones dummy del formato predefinido, en este caso el formato del arreglo no está especificado.
SUBROUTINE asume_formato(a, b, n)
IMPLICIT NONE
INTEGER :: n
REAL, DIMENSION(:,:,:) :: a ! Arreglo de tres dimensiones
REAL, DIMENSION(-5:,n:) :: b ! Arreglo de 2 dimensiones
... ! que inicia en (-5,n)
Las funciones intrínsecas SIZE, SHAPE, LBOUND (lower boundary) y UBOUND (upper boundary) son utilizadas con estas declaraciones para poder escribir códigos más generales.
SUBROUTINE intercambiar(a, b)
IMPLICIT NONE ! a y b son arreglos de 2 dimensiones
REAL, DIMENSION(:) :: a, b ! con formato predefinido
REAL, DIMENSION(SIZE(a,DIM=1)&! aux tiene las mismas dimensiones
,SIZE(a,DIM=2)) :: aux ! del arreglo a
aux = a
a = b
b = aux
END