anchor.diff:  
     private
   
  -  public str_num
  -  interface str_num
  -     ! Get string representation of numbers
  -     module procedure str_dp_real
  -     module procedure str_int
  -  end interface str_num
  +  public :: string_val
  +  public :: string_to_val
  +
  +  interface string_val
  +     ! Get string representation of values
  +     module procedure string_dp_real
  +     module procedure string_int
  +     module procedure string_logical
  +  end interface string_val
  +
  +  interface string_to_val
  +     ! Convert string representations to values
  +     module procedure string_to_dp_real
  +     module procedure string_to_int
  +     module procedure string_to_logical
  +  end interface string_to_val
   
   contains
   
  -  function str_dp_real(num, fmt) result(val)
  +  function string_dp_real(num, fmt) result(val)
       ! Get string representation of double precision real
  +    !
  +    ! num :: double precision real value to convert
  +    ! fmt :: optional custom format string
       character(:), allocatable :: val
   
       real(dp), intent(in) :: num
  
positive.code:        end if
      end if
  
    end function str_logical
  
  end module string
  
negative.code: 
      val = trim(adjustl(tmp))
  
    end function string_int
  
    function string_logical(bool, full) result(val)
      ! Get string representation of logical value
      !
      ! bool :: logical value to convert
      ! full :: toggle whether only first letter (T/F) or full word is used
      character(:), allocatable :: val
  
      logical, intent(in) :: bool
  