program demo_unique
use M_sort, only : unique
implicit none
character(len=:),allocatable :: strings(:)
integer,allocatable :: ints(:)
integer :: icount
integer :: ilong
strings=[character(len=20) :: 'orange','green','green', &
& 'red','white','blue','yellow','blue','magenta','cyan','black']
ints=[30,1,1,2,3,4,4,-10,20,20,30,3]
ilong=maxval(len_trim(strings))
write(*,'(a,*(a,1x))')'ORIGINAL:',strings(:)(:ilong)
write(*,'("SIZE=",i0)')size(strings)
call unique(strings,icount)
write(*,*)
write(*,'(a,*(a,1x))')'AFTER :',strings(1:icount)(:ilong)
write(*,'("SIZE=",i0)')size(strings)
write(*,'("ICOUNT=",i0)')icount
write(*,'(a,*(g0,1x))')'ORIGINAL:',ints
write(*,'("SIZE=",i0)')size(ints)
call unique(ints,icount)
write(*,*)
write(*,'(a,*(g0,1x))')'AFTER :',ints(1:icount)
write(*,'("SIZE=",i0)')size(ints)
write(*,'("ICOUNT=",i0)')icount
end program demo_unique