integer source, dest, soffset, roffset
integer status(MPI_STATUS_SIZE), istep
do istep=0,k-1
source = get_source (istep, p, m, k, myrank)
dest = get_dest (istep, p, m, k, myrank)
soffset = get_soffset (p, r, k, myrank, dest)
roffset = get_roffset (p, r, k, myrank, source)
call mpi_sendrecv (a(soffset), nsuperblks, newtype,
dest, tag, b(roffset), nsuperblks,
newtype, source, tag,
comm, status, ierr)
end do