program greetings_comm implicit none include 'mpif.h' integer :: my_rank, np, sender, recipient, tag, ln, ierr integer :: status(MPI_STATUS_SIZE) character(100) :: message=", greetings from " character(100) :: name=" " call MPI_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD, my_rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, np, ierr) sender = my_rank - 1; recipient = my_rank + 1 if ( my_rank == 0 ) then write(6,FMT="(A)") "What's your name?" read(5,"(A)") name ln = len_trim(name) endif if ( sender >= 0 ) then tag = 0 call MPI_Recv(ln, 1, MPI_INTEGER, sender, tag, MPI_COMM_WORLD, status, ierr) tag = 1 call MPI_Recv(name, ln, MPI_CHARACTER, sender, tag, MPI_COMM_WORLD, status, ierr) endif if ( recipient < np ) then tag = 0 call MPI_Send(ln, 1, MPI_INTEGER, recipient, tag, MPI_COMM_WORLD, ierr) tag = 1 call MPI_Send(name, ln, MPI_CHARACTER, recipient, tag, MPI_COMM_WORLD, ierr) endif write(6,FMT="(3A,I3)") "Hi ",TRIM(name),TRIM(message),my_rank call MPI_Finalize(ierr) end program greetings_comm