The original implementation is as follows.
subroutine my_receiver_original
c ------------------------------------------------------------------
(...)
c Local
c -----
integer*4 m_stat(MPI_STATUS_SIZE)
character card*(zbuf) ! buffer for messages received
do while( keep_receiving )
call MPI_RECV(card, zbuf, MPI_CHARACTER,
. MPI_ANY_SOURCE, M_RECCSV, MY_COMM,
. m_stat, m_ierr )
c Process message: disk IO
c ---------------
<DO SOMETHING>
if( SOMETHING_ELSE ) then
keep_receiving = .false.
end if
end do
(...)
return
end