program main
character(len=:), pointer :: result
function concat_strings(str1, str2) result(result)
character(len=*), intent(in) :: str1, str2
character(len=:), pointer :: result
integer :: len1, len2, len_total
len1 = len(trim(str1))
len2 = len(trim(str2))
len_total = len1 + len2
allocate(character(len=len_total) :: result)
result(1:len1) = trim(str1)
result(len1+1:len_total) = trim(str2)
end function concat_strings
end program main