program dynamic_array implicit none integer, allocatable, dimension (:,:) :: a integer :: m, n, i, j print *, 'Give matrix dimensions ( rows, columns):' read *, m, n print '(2(a,i2))', 'm=', m, ' n=', n allocate (a(m,n)) do j = 1, n do i = 1, m a(i,j) = (i-1)*n + j end do end do do i = 1, m print *, a(i,:) end do deallocate (a) end program dynamic_array