C C Test that error handlers can be applied and used through Fortran C program main include 'mpif.h' integer ierr, errorclass integer buf, errors, request C call mpi_init(ierr) C C Try to set the errors-return handler C call mpi_errhandler_set(mpi_comm_world, mpi_errors_return, ierr) errors = 0 C C Activate the handler with a simple case C call mpi_send( buf, 1, MPI_INTEGER, -99, 0, MPI_COMM_WORLD, ierr ) if (IERR .eq. MPI_SUCCESS) then errors = errors + 1 print *, 'MPI_Send of negative rank did not return error' endif C C Check for a reasonable error message call mpi_error_class(ierr, errorclass, err) if (errorclass .ne. MPI_ERR_RANK) then errors = errors + 1 print *, 'Error class was not MPI_ERR_RANK, was ', errorclass endif C C Activate the handler with a simple case C call mpi_irecv( buf, 1, MPI_INTEGER, -100, 2, MPI_COMM_WORLD, * request, ierr ) if (IERR .eq. MPI_SUCCESS) then errors = errors + 1 print *, 'MPI_Irecv of negative rank did not return error' endif C C Check for a reasonable error message call mpi_error_class(ierr, errorclass, err) if (errorclass .ne. MPI_ERR_RANK) then errors = errors + 1 print *, 'Error class was not MPI_ERR_RANK, was ', errorclass endif if (errors .eq. 0) then print *, ' No Errors' else print *, ' Found ', errors, ' errors' endif C call mpi_finalize(ierr) C end