#include "../../ESMFVersionDefine.h" #if (ESMF_MAJOR_VERSION < 5 || ESMF_MINOR_VERSION < 2) #undef ESMF_520r #define ESMF_LogFoundError ESMF_LogMsgFoundError #else #define ESMF_520r #endif ! ! !description: error messages ! ! !revision history: ! ! january 2007 hann-ming henry juang ! May 2011 Weiyu yang, Modified for using the ESMF 5.2.0r_beta_snapshot_07. ! ! ! !interface: ! module module_err_msg ! !!uses: ! USE esmf_mod implicit none private public :: err_msg,message_check logical, parameter :: iprint = .false. character(esmf_maxstr) :: message_check contains subroutine err_msg_int(rc1,msg,val,rcfinal) ! integer, intent(inout) :: rc1 integer, intent(out) :: rcfinal character (len=*), intent(in) :: msg integer, intent(in) :: val #ifdef ESMF_520r if(esmf_logfounderror(rcToCheck=rc1, msg=msg)) then #else if(esmf_logfounderror(rc1, msg)) then #endif rcfinal = esmf_failure print*, 'error happened for ',msg,' ',val,' rc = ', rc1 write(0,*)' ERROR: ',msg,' ',val,' rc = ', rc1 rc1 = esmf_success else if(iprint) print*, 'pass ',msg,' ',val end if return end subroutine err_msg_int subroutine err_msg_val(rc1,msg,val,rcfinal) ! integer, intent(inout) :: rc1 integer, intent(out) :: rcfinal character (len=*), intent(in) :: msg real, intent(in) :: val #ifdef ESMF_520r if(esmf_logfounderror(rc1, msg=msg)) then #else if(esmf_logfounderror(rc1, msg)) then #endif rcfinal = esmf_failure print*, 'error happened for ',msg,' ',val,' rc = ', rc1 write(0,*)' ERROR: ',msg,' ',val,' rc = ', rc1 rc1 = esmf_success else if(iprint) print*, 'pass ',msg,' ',val end if return end subroutine err_msg_val subroutine err_msg_var(rc1,msg,chr,rcfinal) ! integer, intent(inout) :: rc1 integer, intent(out) :: rcfinal character (len=*), intent(in) :: msg character (len=*), intent(in) :: chr #ifdef ESMF_520r if(esmf_logfounderror(rc1, msg=msg)) then #else if(esmf_logfounderror(rc1, msg)) then #endif rcfinal = esmf_failure print*, 'error happened for ',msg,' ',chr,' rc = ', rc1 write(0,*)' ERROR: ',msg,' ',chr,' rc = ', rc1 rc1 = esmf_success else if(iprint) print*, 'pass ',msg,' ',chr end if return end subroutine err_msg_var subroutine err_msg(rc1,msg,rc) integer, intent(inout) :: rc1 integer, intent(out) :: rc character (len=*), intent(in) :: msg #ifdef ESMF_520r if(esmf_logfounderror(rc1, msg=msg)) then #else if(esmf_logfounderror(rc1, msg)) then #endif rc = esmf_failure print*, 'error happened for ',msg, ' rc = ', rc1 write(0,*)' ERROR: ',trim(msg),' rc = ', rc1 rc1 = esmf_success else rc = esmf_success if(iprint) print*, 'pass ',msg end if return end subroutine err_msg subroutine err_msg_final(rcfinal,msg,rc) integer, intent(inout) :: rcfinal integer, intent(inout) :: rc character (len=*), intent(in) :: msg if(rcfinal == esmf_success) then if(iprint) print*, "final pass: ",msg else print*, "final fail: ",msg write(0,*)' FINAL ERROR: ',msg end if ! if(present(rc)) then rc = rcfinal ! end if return end subroutine err_msg_final end module module_err_msg