PROGRAM Mese
!---------------------------------------------------------------------
! Determina il numero di giorni che compongono un mese.
! Non si considera il caso degli anni bisestili.
!---------------------------------------------------------------------
  IMPLICIT NONE
  INTEGER :: n_mese, n_giorni

  WRITE(*,*) "Dammi il numero di un mese "
  READ(*,*) n_mese

!     Selezione a più vie per variabili di controllo discrete:
!     intere, reali o logiche.
!     ATTENZIONE: tutti i selettori devono essere mutuamente esclusivi
  SELECT CASE (n_mese)
!       Si possono usare intervalli di valori
!       anche inferiormente e superiormente illimitati ...
    CASE (:0, 13:)
      WRITE(*,*) "Errore"
      STOP
!   ... oppure liste di valori ...
    CASE (4, 6, 9, 11) ! Trenta di' conta novembre
      n_giorni = 30    ! con april, giugno e settembre
!   ... ed ovviamente valori singoli.
    CASE (2)           ! di ventotto ce n'e' uno
      n_giorni = 28
!       La via di DEFAULT e' opzionale.
    CASE DEFAULT       ! tutti gli altri ne han trentuno
      n_giorni = 31
  END SELECT

  WRITE(*,*) "Il mese ha", n_giorni, " giorni"
  STOP

END PROGRAM Mese

