Previous Page | Next Page

Hash and Hash Iterator Object Language Elements

HAS_NEXT Method



Determines whether there is a next item in the current key's multiple data item list.
Applies to: Hash object

Syntax
Arguments
Details
Examples
See Also

Syntax

rc=object.HAS_NEXT(RESULT: R);


Arguments

rc

specifies whether the method succeeded or failed.

A return code of zero indicates success; a nonzero value indicates failure. If you do not supply a return code variable for the method call and the method fails, then an appropriate error message is written to the log.

object

specifies the name of the hash object.

RESULT:R

specifies the numeric variable R, which receives a zero value if there is not another data item in the data item list or a nonzero value if there is another data item in the data item list.


Details

If a key has multiple data items, you can use the HAS_NEXT method to determine whether there is a next item in the current key's multiple data item list. If there is another item, the method will return a nonzero value in the numeric variable R. Otherwise, it will return a zero.

The FIND method determines whether the key exists in the hash object. The HAS_NEXT method determines whether the key has multiple data items associated with it. When you have determined that the key has another data item, that data item can be retrieved by using the FIND_NEXT method, which sets the data variable to the value of the data item so that it is available for use after the method call. Once you are in the data item list, you can use the HAS_PREV and FIND_PREV methods in addition to the HAS_NEXT and FIND_NEXT methods to traverse the list.


Examples

This example creates a hash object where several keys have multiple data items. It uses the HAS_NEXT method to find all the data items.

data testdup;
   length key data 8;
   input key data;
   datalines;
   1 100
   2 11
   1 15
   3 20
   2 16
   2 9
   3 100
   5 5
   1 5
   4 6
   5 99
;

data _null_;
   length r 8;
   dcl hash h(dataset:'testdup', multidata: 'y');
   h.definekey('key');
   h.definedata('key', 'data');
   h.definedone();
   call missing (key, data);

   do key = 1 to 5; 
      rc = h.find();
      if (rc = 0) then do;
         put key= data=;
         h.has_next(result: r);
         do while(r ne 0);
             rc = h.find_next();
             put 'dup ' key= data;
             h.has_next(result: r);
         end;
      end;
   end;
run;

The following lines are written to the SAS log.

Output of Keys with Multiple Data Items

key=1 data=100
dup key=1 5
dup key=1 15
key=2 data=11
dup key=2 9
dup key=2 16
key=3 data=20
dup key=3 100
key=4 data=6
key=5 data=5
dup key=5 99

See Also

Methods:

FIND Method

FIND_NEXT Method

FIND_PREV Method

HAS_PREV Method

Non-Unique Key and Data Pairs in SAS Language Reference: Concepts

Previous Page | Next Page | Top of Page