PROGRAM SomPro IMPLICIT NONE INTEGER :: ris, a, b, c INTERFACE INTEGER FUNCTION somma(input1,input2) integer , intent(IN) :: input1,input2 END FUNCTION somma INTEGER FUNCTION prodotto(input1,input2) integer , intent(IN) :: input1,input2 END FUNCTION prodotto END INTERFACE WRITE(*,*) "Dammi i tre numeri interi operandi" READ(*,*) a, b, c CALL scrivi(somma,ris) CALL scrivi(prodotto,ris) STOP CONTAINS SUBROUTINE scrivi(operaz, risext) IMPLICIT NONE INTEGER, EXTERNAL :: operaz INTEGER, INTENT(OUT) :: risext risext = operaz(operaz(a,b),c) WRITE(*,*) "Il risultato e' ", risext END SUBROUTINE scrivi END PROGRAM SomPro INTEGER FUNCTION somma(input1, input2) IMPLICIT NONE INTEGER , INTENT(IN) :: input1, input2 somma = input1 + input2 WRITE(*,*) "somma parziale = ",somma END FUNCTION somma INTEGER FUNCTION prodotto(input1, input2) IMPLICIT NONE INTEGER , INTENT(IN) :: input1, input2 prodotto = input1 * input2 WRITE(*,*) "prodotto parziale = ",prodotto END FUNCTION prodotto