! Module
module my_mod

  interface operator(+) ! The intrinsic operator being overloaded is '+'
    module procedure concat
  end interface

contains

  function concat(char_a,char_b)
    implicit none
    character(*), intent(in) :: char_a, char_b 
    character(len_trim(char_a)+len_trim(char_b)) :: concat
    concat = trim(char_a)//trim(char_b)
  end function concat

end module

! Program
program main
use my_mod
implicit none
  character(16) :: a,b

  a="Barb"
  b="ados"

  print*, "'a' is ", a
  print*, "'b' is ", b
  print*, "'a+b' is ", concat(a,b)
  print*, "'a+b' is ", a+b
end program main
