************************************************************************
* File: fatt.for
************************************************************************
* Scopo: uso di un modulo funzione
************************************************************************

************************************************************************
* Funzione che calcola il fattoriale di un numero intero
************************************************************************

      INTEGER FUNCTION Fatt (n)
* Calcola il fattoriale del numero intero n
      IMPLICIT NONE

* Dichiarazioni tipo parametri formali
*   parametri di input:
      INTEGER n

* Dichiarazioni variabili locali
      INTEGER i

      Fatt = 1
      DO 100 i = 1, n
        Fatt = Fatt * i
 100  CONTINUE
      END
*     Fatt

************************************************************************
* Programma principale
************************************************************************

      PROGRAM UsoFatt
* Legge da tastiera un intero ne calcola il fattoriale e lo stampa
      IMPLICIT NONE

* Dichiarazioni variabili
      INTEGER i, j

* Dichiarazioni funzioni esterne
      INTEGER Fatt
*       parametri: (INTEGER)

      WRITE (*,*) 'Inserisci un intero'
      READ (*,*) i
      j = Fatt(i)
      WRITE (*,*) 'Il fattoriale di ', i, ' e'' ', j
      STOP

      END