update Subroutine

subroutine update(arr, string)

Arguments

Type IntentOptional Attributes Name
character(len=:), allocatable :: arr(:)
character(len=*) :: string

Contents

Source Code


Variables

Type Visibility Attributes Name Initial
integer, public :: end
integer, public :: ii
integer, public :: place
integer, public :: plus

Source Code

      subroutine update(arr,string)
      character(len=:),allocatable :: arr(:)
      character(len=*)             :: string
      integer                      :: place, plus, ii, end
      ! find where string is or should be
      call locate(arr,string,place)
      write(*,*)'for "'//string//'" index is ',place, size(arr)
      ! if string was not found insert it
      if(place.lt.1)then
         plus=abs(place)
         ii=len(arr)
         end=size(arr)
         ! empty array
         if(end.eq.0)then
            arr=[character(len=ii) :: string ]
         ! put in front of array
         elseif(plus.eq.1)then
            arr=[character(len=ii) :: string, arr]
         ! put at end of array
         elseif(plus.eq.end)then
            arr=[character(len=ii) :: arr, string ]
         ! put in middle of array
         else
            arr=[character(len=ii) :: arr(:plus-1), string,arr(plus:) ]
         endif
         ! show array
         write(*,'("SIZE=",i0,1x,*(a,","))')end,(trim(arr(i)),i=1,end)
      endif
      end subroutine update