RosettaCodeData/Task/Power-set/SAS/power-set-1.sas
2023-07-01 13:44:08 -04:00

53 lines
769 B
SAS

options mprint mlogic symbolgen source source2;
%macro SubSets (FieldCount = );
data _NULL_;
Fields = &FieldCount;
SubSets = 2**Fields;
call symput ("NumSubSets", SubSets);
run;
%put &NumSubSets;
data inital;
%do j = 1 %to &FieldCount;
F&j. = 1;
%end;
run;
data SubSets;
set inital;
RowCount =_n_;
call symput("SetCount",RowCount);
run;
%put SetCount ;
%do %while (&SetCount < &NumSubSets);
data loop;
%do j=1 %to &FieldCount;
if rand('GAUSSIAN') > rand('GAUSSIAN') then F&j. = 1;
%end;
data SubSets_ ;
set SubSets loop;
run;
proc sort data=SubSets_ nodupkey;
by F1 - F&FieldCount.;
run;
data Subsets;
set SubSets_;
RowCount =_n_;
run;
proc sql noprint;
select max(RowCount) into :SetCount
from SubSets;
quit;
run;
%end;
%Mend SubSets;