Actual source code: ex1f.F

  1: !
  2: !  Simple PETSc Program to test setting error handlers from Fortran
  3: !
  4:       subroutine GenerateErr(ierr)
 5:  #include include/finclude/petsc.h
  6:       PetscErrorCode  ierr

  8:       call PetscError(1,1,'Error message',ierr)

 10:       return
 11:       end

 13:       subroutine MyErrHandler(line,fun,file,dir,n,p,mess,ctx,ierr)
 14:  #include include/finclude/petsc.h
 15:       integer line,n,p
 16:       PetscInt ctx
 17:       PetscErrorCode ierr
 18:       character*(*) fun,file,dir,mess

 20:       print*,'My error handler ',mess
 21:       return
 22:       end

 24:       program main
 25:  #include include/finclude/petsc.h
 26:       PetscErrorCode ierr
 27:       external       MyErrHandler

 29:       call PetscInitialize(PETSC_NULL_CHARACTER,ierr)

 31:       call PetscPushErrorHandler(PetscTraceBackErrorHandler,               &
 32:      &                           PETSC_NULL_INTEGER,ierr)

 34:       call GenerateErr(ierr)

 36:       call PetscPushErrorHandler(MyErrHandler,                           &
 37:      &                           PETSC_NULL_INTEGER,ierr)

 39:       call GenerateErr(ierr)

 41:       call PetscPushErrorHandler(PetscAbortErrorHandler,                   &
 42:      &                           PETSC_NULL_INTEGER,ierr)

 44:       call GenerateErr(ierr)

 46:       call PetscFinalize(ierr)
 47:       end