module cable_error_handler_base_mod use iso_fortran_env, only: error_unit implicit none private public :: cable_error_handler_base_t type cable_error_handler_base_t contains procedure :: log_message => cable_error_handler_base_log_message procedure :: abort => cable_error_handler_base_abort end type cable_error_handler_base_t contains subroutine cable_error_handler_base_log_message(this, message, file, line) class(cable_error_handler_base_t), intent(in) :: this character(len=*), intent(in) :: message character(len=*), intent(in) :: file integer, intent(in) :: line character(5) :: line_string write (line_string, "(I5)") line write (error_unit, *) "Error: " // file // ":" // "L" // trim(adjustl(line_string)) // ": " // message end subroutine cable_error_handler_base_log_message subroutine cable_error_handler_base_abort(this) class(cable_error_handler_base_t), intent(inout) :: this error stop 1 end subroutine end module