Hi,
I tested this code
data h ; input key hdata ; cards ; 1 5 1 10 1 15 2 9 2 11 2 16 3 20 3 100 4 6 5 5 5 99 ; run ; data _null_ ; if 0 then set H ; dcl hash H (dataset: "H", multidata: "Y", ordered: "A") ; h.definekey ("key") ; h.definedata ("key", "hdata") ; h.definedone () ; do key = 1, 2, 5 ; put '01 - key est ' key; do find_rc = h.find() by 0 while (find_rc = 0) ; put ' au do find, find_rc est ' find_rc; put ' 02 - hdata est ' hdata; if hdata > 9 then remove_rc = h.removedup() ; put ' 03 - remove_rc est ' remove_rc; find_rc = h.find_next() ; put ' 04 - find_rc est ' find_rc; end ; end ; dcl hiter ih ("H") ; do while (ih.next() = 0) ; put key= hdata= ; end ; run ; AND GOT THIS RESULT:
NOTE: There were 11 observations read from the data set WORK.H.
01 - key est 1
au do find, find_rc est 0
02 - hdata est 5
03 - remove_rc est .
04 - find_rc est 0
au do find, find_rc est 0
02 - hdata est 10
03 - remove_rc est 0
04 - find_rc est 160038
01 - key est 2
au do find, find_rc est 0
02 - hdata est 9
03 - remove_rc est 0
04 - find_rc est 0
au do find, find_rc est 0
02 - hdata est 11
03 - remove_rc est 0
04 - find_rc est 160038
01 - key est 5
au do find, find_rc est 0
02 - hdata est 5
03 - remove_rc est 0
04 - find_rc est 0
au do find, find_rc est 0
02 - hdata est 99
03 - remove_rc est 0
04 - find_rc est 160038
key=1 hdata=5
key=1 hdata=15
key=2 hdata=9
key=2 hdata=16
key=3 hdata=20
key=3 hdata=100
key=4 hdata=6
key=5 hdata=5
NOTE: DATA STEP stopped due to looping.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
real time 0.02 seconds
cpu time 0.02 seconds
In the second 04 printing, I was expecting a 0 , cause there is in fact a next.
What is that 160038 ???? It makes absolutely NO SENSE !!!
And it goes on for others as well. . .
You can email me at michel.jubinville@hotmail.ca
Thanks
... View more