Let's assume a function that works for a string of any length str:
Two different alternatives came to my mind, but I am not sure they are exactly the same or which one is a better practice.
Way-1
function func_name(str) result(ouput)
character(len=*), intent(in) :: str
...
end function func_name
Way-2
function func_name(str) result(ouput)
character(len=:),allocatable, intent(in) :: str
...
end function func_name