include 'mpif.h'
 real a(100,100,100), e(9,9,9)
 integer oneslice, twoslice, threeslice, sizeofreal
 integer rank, ierr, status(MPI_STATUS_SIZE)
 call mpi_init (ierr)
 call mpi_comm_rank (MPI_COMM_WORLD, rank, ierr)
 if (rank .eq. 0) then
   call mpi_type_extent (MPI_REAL, sizeofreal, ierr)
   call mpi_type_vector (9, 1, 2, MPI_REAL, 
                         oneslice, ierr)
   call mpi_type_hvector (9, 1, 100*sizeofreal,
                          oneslice, twoslice, ierr)
   call mpi_type_hvector (9, 1, 100*100*sizeofreal
                          twoslice, threeslice, ierr)
   call mpi_type_commit (threeslice, ierr)
   call mpi_send (a(1,3,2), 1, threeslice, 1, 0,
                  MPI_COMM_WORLD, ierr)
 else if (rank .eq. 1) then
   call mpi_recv (e, 9*9*9, MPI_REAL, 0, 0,
                   MPI_COMM_WORLD, status, ierr)
 end if
 call mpi_finalize (ierr)