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
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;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.