I guess you confuse the number of data items that a data or proc step can handle simultaneously with the need to define a name for each individual item.
As other languages, SAS provides constructs for this. The fastest is a temporary array, and hash objects are similarly quick, and only limited by the memory available to the SAS session:
data _null_;
length n value 8;
declare hash h ();
h.definekey("n");
h.definedata("value");
h.definedone();
do n = 1 to 10000000;
value = rand("uniform") * 1000;
h.add();
end;
run;
Log:
27 data _null_;
28 length n value 8;
29 declare hash h ();
30 h.definekey("n");
31 h.definedata("value");
32 h.definedone();
33 do n = 1 to 10000000;
34 value = rand("uniform") * 1000;
35 h.add();
36 end;
37 run;
NOTE: Verwendet wurde: DATA statement - (Gesamtverarbeitungszeit):
real time 9.70 seconds
cpu time 2.56 seconds
In just 10 seconds, the step created 20 million numeric values, and built the search tree for one of them.
This on a 2-core pSeries server with a MEMSIZE of 512M.
... View more