anchor.diff:    !---------------------------------------------------------------------------------------------------------------------------------
     endfunction str_a_I8P
   
  -  pure function str_a_I4P(n, no_sign, delimiters) result(str)
  +  pure function str_a_I4P(n, no_sign, separator, delimiters) result(str)
     !---------------------------------------------------------------------------------------------------------------------------------
     !< Convert integer array to string.
     !---------------------------------------------------------------------------------------------------------------------------------
     integer(I4P), intent(in)           :: n(:)            !< Integer array to be converted.
     logical,      intent(in), optional :: no_sign         !< Flag for leaving out the sign.
  +  character(1), intent(in), optional :: separator       !< Eventual separator of array values.
     character(*), intent(in), optional :: delimiters(1:2) !< Eventual delimiters of array values.
     character(len=:), allocatable      :: str             !< Returned string containing input number.
     character(DI4P)                    :: strn            !< String containing of element of input array number.
  +  character(len=1), allocatable      :: sep             !< Array values separator
     integer                            :: i               !< Counter.
     !---------------------------------------------------------------------------------------------------------------------------------
   
     !---------------------------------------------------------------------------------------------------------------------------------
  +  str = ''
  +  sep = ','
  +  if(present(separator)) sep = separator
     if (present(no_sign)) then
  -    str = ''
       do i=1,size(n)
         strn = str_I4P(no_sign=no_sign, n=n(i))
  -      str = str//','//trim(strn)
  +      str = str//sep//trim(strn)
       enddo
     else
  -    str = ''
       do i=1,size(n)
         strn = str_I4P(n=n(i))
  -      str = str//','//trim(strn)
  +      str = str//sep//trim(strn)
       enddo
     endif
     str = trim(str(2:))
  
positive.code:   !---------------------------------------------------------------------------------------------------------------------------------
    endfunction str_a_R4P
  
    pure function str_a_I8P(n, no_sign, delimiters) result(str)
    !---------------------------------------------------------------------------------------------------------------------------------
    !< Convert integer array to string.
    !---------------------------------------------------------------------------------------------------------------------------------
    integer(I8P), intent(in)           :: n(:)            !< Integer array to be converted.
    logical,      intent(in), optional :: no_sign         !< Flag for leaving out the sign.
    character(*), intent(in), optional :: delimiters(1:2) !< Eventual delimiters of array values.
    character(len=:), allocatable      :: str             !< Returned string containing input number.
    character(DI8P)                    :: strn            !< String containing of element of input array number.
    integer                            :: i               !< Counter.
    !---------------------------------------------------------------------------------------------------------------------------------
  
    !---------------------------------------------------------------------------------------------------------------------------------
    if (present(no_sign)) then
      str = ''
      do i=1,size(n)
        strn = str_I8P(no_sign=no_sign, n=n(i))
        str = str//','//trim(strn)
      enddo
    else
      str = ''
      do i=1,size(n)
        strn = str_I8P(n=n(i))
        str = str//','//trim(strn)
      enddo
    endif
    str = trim(str(2:))
  
negative.code:   !---------------------------------------------------------------------------------------------------------------------------------
    endfunction str_a_I4P
  
    pure function str_a_I2P(n, no_sign, separator, delimiters) result(str)
    !---------------------------------------------------------------------------------------------------------------------------------
    !< Convert integer array to string.
    !---------------------------------------------------------------------------------------------------------------------------------
    integer(I2P), intent(in)           :: n(:)            !< Integer array to be converted.
    logical,      intent(in), optional :: no_sign         !< Flag for leaving out the sign.
    character(1), intent(in), optional :: separator       !< Eventual separator of array values.
    character(*), intent(in), optional :: delimiters(1:2) !< Eventual delimiters of array values.
    character(len=:), allocatable      :: str             !< Returned string containing input number.
    character(DI2P)                    :: strn            !< String containing of element of input array number.
    character(len=1), allocatable      :: sep             !< Array values separator
    integer                            :: i               !< Counter.
    !---------------------------------------------------------------------------------------------------------------------------------
  
    !---------------------------------------------------------------------------------------------------------------------------------
    str = ''
    sep = ','
    if(present(separator)) sep = separator
    if (present(no_sign)) then
      do i=1,size(n)
        strn = str_I2P(no_sign=no_sign, n=n(i))
        str = str//sep//trim(strn)
      enddo
    else
      do i=1,size(n)
        strn = str_I2P(n=n(i))
        str = str//sep//trim(strn)
      enddo
    endif
    str = trim(str(2:))
  