demo_insert.f90 Source File


Contents

Source Code


Source Code

      program demo_insert
      use M_sort, only : sort_shell
      use M_list, only : locate, insert
      implicit none
      character(len=:),allocatable :: arr(:)
      integer                       :: i

      arr=[character(len=20) :: '', 'ZZZ', 'aaa', 'b', 'xxx' ]
      ! make sure sorted in descending order
      call sort_shell(arr,order='d')
      ! add or replace values
      call update(arr,'b')
      call update(arr,'[')
      call update(arr,'c')
      call update(arr,'ZZ')
      call update(arr,'ZZZ')
      call update(arr,'ZZZZ')
      call update(arr,'')
      call update(arr,'z')

      contains
      subroutine update(arr,string)
      character(len=:),allocatable :: arr(:)
      character(len=*)             :: string
      integer                      :: place, end

      end=size(arr)
      ! find where string is or should be
      call locate(arr,string,place)
      ! if string was not found insert it
      if(place.lt.1)then
         call insert(arr,string,abs(place))
      endif
      ! show array
      end=size(arr)
      write(*,'("array is now SIZE=",i0,1x,*(a,","))')end,(trim(arr(i)),i=1,end)

      end subroutine update
      end program demo_insert