Actual source code: ex1f.F
 
   petsc-3.7.7 2017-09-25
   
  1: !
  2: !  Simple PETSc Program to test setting error handlers from Fortran
  3: !
  4:       subroutine GenerateErr(line,ierr)
  5: #include <petsc/finclude/petscsys.h>
  6:       PetscErrorCode  ierr
  7:       integer line
  9:       call PetscError(PETSC_COMM_SELF,1,line,1,'Error message',ierr)
 11:       return
 12:       end
 14:       subroutine MyErrHandler(comm,line,fun,file,n,p,mess,ctx,ierr)
 15: #include <petsc/finclude/petscsys.h>
 16:       integer line,n,p
 17:       PetscInt ctx
 18:       PetscErrorCode ierr
 19:       MPI_Comm comm
 20:       character*(*) fun,file,mess
 22:       print*,'My error handler ',mess
 23:       return
 24:       end
 26:       program main
 27: #include <petsc/finclude/petscsys.h>
 28:       PetscErrorCode ierr
 29:       external       MyErrHandler
 31:       call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
 33:       call PetscPushErrorHandler(PetscTraceBackErrorHandler,               &
 34:      &                           PETSC_NULL_INTEGER,ierr)
 36:       call GenerateErr(__LINE__,ierr)
 38:       call PetscPushErrorHandler(MyErrHandler,                           &
 39:      &                           PETSC_NULL_INTEGER,ierr)
 41:       call GenerateErr(__LINE__,ierr)
 43:       call PetscPushErrorHandler(PetscAbortErrorHandler,                   &
 44:      &                           PETSC_NULL_INTEGER,ierr)
 46:       call GenerateErr(__LINE__,ierr)
 48:       call PetscFinalize(ierr)
 49:       end