************************************************************************
* File: minnullo.for
************************************************************************
* Scopo: soluzione esercizio 4 del compito di esame del 18/06/1999
************************************************************************

      LOGICAL FUNCTION MinNullo (mat, n)
      IMPLICIT NONE
* Dichiarazione parametri
      INTEGER n, mat(n,2)
* Dichiarazione variabili
      INTEGER i, j

      MinNullo = .FALSE.
      i = 1
      DO WHILE ((i .LT. n) .AND. (.NOT. MinNullo))
        j = i + 1
        DO WHILE ((j .LE. n) .AND. (.NOT. MinNullo))
          MinNullo = ((mat(i,1)*mat(j,2) - mat(i,2)*mat(j,1)) .EQ. 0)
          j = j + 1
        ENDDO
        i = i + 1
      ENDDO
      RETURN
      END

* PROGRAMMA DRIVER (parte non richiesta dal testo)
      PROGRAM Main
      IMPLICIT NONE
* Dichirazione costanti
      INTEGER DIM
      PARAMETER (DIM = 5)
* Dichiarazione variabili
      INTEGER matrice(DIM,2)
* Dichiarazione funzioni esterne
      LOGICAL MinNullo
*       parametri: INTEGER, INTEGER(*,*)

      matrice(1,1) = 1
      matrice(1,2) = 2

      matrice(2,1) = 3
      matrice(2,2) = 4

      matrice(3,1) = 1
      matrice(3,2) = 2

      matrice(4,1) = 2
*     matrice(4,2) = 3
      matrice(4,2) = 4

      matrice(5,1) = 5
      matrice(5,2) = 6

      IF (MinNullo(matrice,DIM)) THEN
        WRITE(*,*) 'La matrice contiene un minore nullo'
      ELSE
        WRITE(*,*) 'La matrice non contiene un minore nullo'
      ENDIF

      STOP
      END
