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