pure function str_a_I2P(n, no_sign, separator, delimiters) result(str)
!< Convert integer array to string.
!<
!<```fortran
!< use penf
!< print "(A)", str(n=[1_I2P, -2_I2P])
!<```
!=> +1,-2 <<<
!<
!<```fortran
!< use penf
!< print "(A)", str(n=[1_I2P, 2_I2P], no_sign=.true.)
!<```
!=> 1,2 <<<
!<
!<```fortran
!< use penf
!< print "(A)", str(n=[1_I2P, -2_I2P], separator='|')
!<```
!=> +1|-2 <<<
!<
!<```fortran
!< use penf
!< print "(A)", str(n=[1_I2P, -2_I2P], delimiters=['(', ')'])
!<```
!=> (+1,-2) <<<
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) :: 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:))
if (present(delimiters)) str = delimiters(1)//str//delimiters(2)
endfunction str_a_I2P