PROGRAM matrice_1 IMPLICIT NONE INTEGER, PARAMETER :: Nda = 10 ! Numero di righe INTEGER, PARAMETER :: Ndat = Nda + ( Nda * Nda ) / 2 REAL(8), DIMENSION(Ndat) :: ati ! vettore dei dati INTEGER, DIMENSION(Nda) :: i_ati ! vettore degli indici INTEGER :: ir, ic, i, ind Ati(:) = 0.0d0 ! Vettore dei dati i_ati(:) = 0 ! Vettore degli indici ind = 0 DO ir = 1, Nda DO ic = 1, ir !  Si definiscono i valori per ATI ind = ind + 1 IF ( ic .EQ. 1 ) THEN !    Inizio riga i_ati(ir) = ind ! print*,"i_ati(",ir,") = ", i_ati(ir) ENDIF ati(ind) = ir + ic END DO END DO DO ir = 1, Nda WRITE(*,*) "ATI(",ir,",:) = ",( ati(i_ati(ir) + ic), ic = 0, (ir - 1) ) END DO END PROGRAM matrice_1