demo_replace.f90 Source File


Contents

Source Code


Source Code

      program demo_replace
      use M_list, only  : insert, locate, replace
      ! Find if a key is in a list and insert it
      ! into the key list and value list if it is not present
      ! or replace the associated value if the key existed
      implicit none
      character(len=20)            :: key
      character(len=100)           :: val
      character(len=:),allocatable :: keywords(:)
      character(len=:),allocatable :: values(:)
      integer                      :: i
      integer                      :: place
      call update('b','value of b')
      call update('a','value of a')
      call update('c','value of c')
      call update('c','value of c again')
      call update('d','value of d')
      call update('a','value of a again')
      ! show array
      write(*,'(*(a,"==>",a,/))')&
             &(trim(keywords(i)),trim(values(i)),i=1,size(keywords))

      call locate(keywords,'a',place)
      if(place.gt.0)then
         write(*,*)'The value of "a" is ',trim(values(place))
      else
         write(*,*)'"a" not found'
      endif

      contains
      subroutine update(key,val)
      character(len=*),intent(in)  :: key
      character(len=*),intent(in)  :: val
      integer                      :: place

      ! find where string is or should be
      call locate(keywords,key,place)
      ! if string was not found insert it
      if(place.lt.1)then
         call insert(keywords,key,abs(place))
         call insert(values,val,abs(place))
      else ! replace
         call replace(values,val,place)
      endif

      end subroutine update
  end program demo_replace