PROGRAM spread1 IMPLICIT NONE INTEGER, PARAMETER :: n = 5 INTEGER :: i, j REAL, DIMENSION (n,n) :: ra WRITE(*, '("RA(i,j) = i+j+1 using SPREAD:"//)') ra = SPREAD( (/ (i, i = 1, n) /), DIM = 1, NCOPIES = n) & + SPREAD( (/ (j, j = 1, n) /), DIM = 2, NCOPIES = n) + 1 WRITE(*, '(5F8.2)') (ra(:, j), j = 1, n) ! Using Array Constructor: WRITE(*,'(//"Using Array Constructor:"//)') ra = RESHAPE ( (/ (((i+j+1), i=1, n), j=1, n) /), SHAPE=(/ n, n /) ) WRITE(*,'(5F8.2)') (ra(:, j), j = 1, n) ! Note the simpler method with FORALL statement in Fortran 95: WRITE(*,'(//"Using FORALL statement (Fortran 95):"//)') FORALL (i = 1: n, j = 1: n) ra(i, j) = i+j+1 WRITE(*,'(5F8.2)') (ra(:, j), j = 1, n) STOP END PROGRAM spread1