program HelloWorld include 'mpif.h' integer my_rank integer p integer source integer dest integer tag character*100 text, message character*10 digit_string integer size integer status(MPI_STATUS_SIZE) integer ierr call MPI_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD, my_rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, p, ierr) tag = 0 source = my_rank - 1 if ( source < 0 ) source = p - 1 dest = my_rank + 1 if ( dest >= p ) dest = 0 if (my_rank == 0) then text = "Hello world from process " call MPI_Send(text, len_trim(text), MPI_CHARACTER, dest, tag, MPI_COMM_WORLD, ierr) end if call MPI_Recv(message, 100, MPI_CHARACTER, source, tag, MPI_COMM_WORLD, status, ierr) if (my_rank /= 0) then call MPI_Send(message, len_trim(message), MPI_CHARACTER, dest, tag, MPI_COMM_WORLD, ierr) end if write(6,FMT="(A,I)") message,my_rank call MPI_Finalize(ierr) end program HelloWorld