!    ************
     program main
!    ************
!
         implicit none
!    
         integer, parameter:: n = 30
         real (kind=8), dimension (n) :: x, y
         real (kind=8) :: alpha, beta, ps, ad
         integer :: choix
         
!
        interface 
          subroutine pdscal (n,x,y,ps)
             integer, intent(in) :: n
             real(kind=8), intent(in), dimension (n) ::x,y
             real(kind=8), intent(out) :: ps
          end subroutine pdscal
        end interface
!
!
!    ******
     do
!    ******
!
         write (6,*) 'choisissez votre operation'
         write (6,*) 'choix 1 : produit scalaire de deux vecteurs'
         write (6,*) 'choix 2 : addition de deux vecteurs'
         write (6,*) 'choix 3 : quitter le programme'
         read (5,*) choix
!

         select case(choix)
          case(1)
           write (6,*) 'donner les valeurs de alpha et beta'
           read (5,*) alpha, beta
           x = alpha
           y = beta
           call pdscal (n,x,y,ps)
           write (6,*) 'le produit scalaire est egal a =',ps
          case(2)
           write (6,*) 'donner les valeurs de alpha et beta'
           read (5,*) alpha, beta
           x = alpha
           y = beta
           call addition (n,x,y,ad)
           write (6,*) 'la somme est egale a =',ad
          case(3)
           exit
         end select
!
!    ******
     end do
!    ******
!
         stop
!  
!    ****************
     end program main
!    ****************
