DATA Step, Macro, Functions and more

How to make 2 consecutive find() lookups with hash tables

Reply
Frequent Contributor
Posts: 124

How to make 2 consecutive find() lookups with hash tables

[ Edited ]

 

 

Hello,

 

I'm just beginning to use hash tables and I have the impression that find() only work once per oberservation.

I don't understand how this come.

 

EDIT: I just found out that rc2=160038

 

 

This is my hash table declaration

 

	if _n_=1 then do;

		***modelvalues ----------------;
		declare hash h1(dataset:'modelData');
		h1.definekey ('Germ', 'Category1', 'Category2', 'AgeGroupDALY', 'Gender') ;
		h1.definedata('Value');
		h1.definedone();
		call missing(Germ, Value, Category1, Category2);
		* e.g. rc=h1.find(KEY:Germ, KEY:"State", KEY:"property", KEY:AgeGroupDALY, KEY:Gender);

	end;

I'm able to find a value, but if I do a second lookup with find() with other keys, 'value' doesn't change like it should be.

It's like the second find doesn't even work or doesnt override 'value'.

 

		rc=h1.find(KEY:Germ, KEY:Edge, KEY:"Probability", KEY:AgeGroupDALY, KEY:Gender);
		put "value=" value;
		rc2=h1.find(KEY:Germ, KEY:Edge, KEY:"Probability", KEY:"0", KEY:"M");
		put "value=" value;

Do I need to close the connection or do something special?

 

Thank you

 

 

Super User
Posts: 9,682

Re: How to make 2 consecutive find() lookups with hash tables

Remember Put CALL MISSING() before each and every FIND() to avoid the error result.



call missing(Value);  /* <---- No need to call missing KEY variable, Only DATA variable   */
rc=h1.find(KEY:Germ, KEY:Edge, KEY:"Probability", KEY:AgeGroupDALY, KEY:Gender);
put "value=" value;

call missing(Value);
rc2=h1.find(KEY:Germ, KEY:Edge, KEY:"Probability", KEY:"0", KEY:"M");
put "value=" value;

Ask a Question
Discussion stats
  • 1 reply
  • 183 views
  • 1 like
  • 2 in conversation