!
! This file is part of SACAMOS, State of the Art CAble MOdels for Spice.
! It was developed by the University of Nottingham and the Netherlands Aerospace
! Centre (NLR) for ESA under contract number 4000112765/14/NL/HK.
!
! Copyright (C) 2016-2018 University of Nottingham
!
! SACAMOS is free software: you can redistribute it and/or modify it under the
! terms of the GNU General Public License as published by the Free Software
! Foundation, either version 3 of the License, or (at your option) any later
! version.
!
! SACAMOS is distributed in the hope that it will be useful, but
! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
! for more details.
!
! A copy of the GNU General Public License version 3 can be found in the
! file GNU_GPL_v3 in the root or at .
!
! SACAMOS uses the EISPACK library (in /SRC/EISPACK). EISPACK is subject to
! the GNU Lesser General Public License. A copy of the GNU Lesser General Public
! License version can be found in the file GNU_LGPL in the root of EISPACK
! (/SRC/EISPACK ) or at .
!
! The University of Nottingham can be contacted at: ggiemr@nottingham.ac.uk
!
!
!SUBROUTINE add_integer_to_string
!
! NAME
! SUBROUTINE add_integer_to_string
!
! DESCRIPTION
!
! add an integer to string1 and return the result in string2
!
! COMMENTS
!
!
! HISTORY
!
! started 8/08/2012 CJS
! revised notation 4/12/2016 CJS
!
SUBROUTINE add_integer_to_string(string1,n,string2)
IMPLICIT NONE
! variables passed to the subroutine
character(LEN=*),intent(IN) :: string1 ! input string
integer,intent(IN) :: n ! input number to be added to the input string
character(LEN=*),intent(OUT) :: string2 ! output string
! local variables
character(LEN=20) :: stringn
integer :: name_len
integer :: n_char_n,i,string_pos
integer :: digit,num,n_digits
integer :: mask
! START
name_len=len(string1)
if (n.LT.0) then
run_status='ERROR: in add_integer_to_string: n<0'
CALL write_program_status()
STOP 1
else if (n.eq.0) then
! special case if n=0
n_digits=1
stringn(1:1)='0'
else
! add a positive integer to a string
num=n
n_digits=int(log10(dble(num)))+1 ! calculate the number of digits in the integer
mask=1
! loop over digits, in the order units, tens, hundreds...
do i=1,n_digits
digit=mod(num,mask*10)/mask ! work out the current digit value
string_pos=n_digits-i+1 ! digit position in string
stringn(string_pos:string_pos)=char(digit+ichar('0')) ! convert digit to character and add to string
num=num-mask*digit ! subtract this digit from the number
mask=mask*10
end do ! next digit
end if
string2=trim(string1)//stringn(1:n_digits) ! append the number string to string 1
RETURN
END SUBROUTINE add_integer_to_string