BookmarkSubscribeRSS Feed
jpm2478
Calcite | Level 5

I'm working with Hash Tables and I'm doing multiple lookups...I'm trying to understand this code below. What is the use of Do loop increment by 0?

 

I thought IORC is allocated an automatic code? If so, then why say IORC=find()? Any help will be appreciated.

 

set Base_2 ;
do _iorc_ = b.find() by 0 while (_iorc_ = 0) ;
output ;
_iorc_ = b.find_next() ;
end ;

3 REPLIES 3
novinosrin
Tourmaline | Level 20

Looks like somebody's following PD's style of programming or his book alongside me :). AFIK, The _iorc_ variable is freely available  automatic variable unless referencing an index and is automatically dropped. Here the usage is pretty much for that very purpose.  The initial index value would be 0 if true and the loop will only execute if the same is 0.

 

Then, the need is to find and retrieve the data portion to the PDV from the hash object within the key item operation, therefore as you loop through the multiple items for the same key, you can't have the _iorc_ variable incrementing by any number until a full pass of a key multiple data item is complete.

 

Soon as the pointer moves past the key item, it sets return code _iorc_ to a non zero value and the loop stops. You can also use

return code rc or any other variable as return code like

do rc= b.find() by 0 while (rc= 0) ;
output ;
rc= b.find_next() ;
end ;

 

 however you may have to drop the variable though from the output dataset. Wish I could use the same words as PD does but that's copyrighted material. 

 

 

HTH

 

jpm2478
Calcite | Level 5

What is the use of increment by 0? 

novinosrin
Tourmaline | Level 20

it doesn't increment, the by 0 makes sure the loop operation continues/works

 

do rc= b.find() by 0 while (rc= 0) ;
output ;
rc= b.find_next() ;
end ;

 

 

is  exactly the equivalent of 

 

rc=b.find();

do  while (rc= 0) ;
output ;
rc= b.find_next() ;
end ;

 

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

How to connect to databases in SAS Viya

Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 3 replies
  • 1285 views
  • 0 likes
  • 2 in conversation