************************************************************************
* File: sortfile.for
************************************************************************
* Scopo: utilizza il modulo realizzato dal file bubsort.for
*        effettua lettura da file e scrittura su file
************************************************************************

      PROGRAM SortFile

* Istruzioni dichiarative
      IMPLICIT NONE

* Dichiarazioni di tipo per le costanti
      INTEGER dim
      CHARACTER*12 nomefilein, nomefileout
* Definizioni delle costanti
      PARAMETER (dim = 10)
      PARAMETER (nomefilein = 'VETT.TXT', nomefileout = 'SORTED.TXT')

* Dichiarazioni delle variabili
      INTEGER j
      INTEGER miovett(dim)

* Subroutine usate:
*     BubSort (INTEGER(*), INTEGER)

* Istruzioni esecutive

* lettura vettore da file
      OPEN (9, FILE = nomefilein)
      DO 10 j = 1, dim
        READ (9,*) miovett(j)
 10   CONTINUE
      CLOSE (9)

* stampa del vettore su video, un elemento per riga
      WRITE (*,*) 'Prima dell''ordinamento ...'
      DO 20 j = 1,dim
        WRITE (*,*) j, ': ', miovett(j)
 20   CONTINUE

      CALL BubSort (miovett, dim)

* stampa il vettore ordinato su file e sul video
      WRITE (*,*) 'Dopo l''ordinamento ...'
      OPEN (8, FILE = nomefileout)
      WRITE (*,*) 'viene anche scritto sul file SORTED.TXT'
      DO 30 j = 1, dim
        WRITE (*,*) j, ': ', miovett(j)
        WRITE (8,*) miovett(j)
 30   CONTINUE
      CLOSE (8)

      STOP
      END