options ls=80; %macro corsamp; data sim; do i = 1 to 100; x = rannor(0); y = rannor(0); output; end; run; %mend corsamp; %corsamp; proc corr noprint out=corrout(where=(_type_ = 'CORR' and _name_ = 'x')) data=sim; var x y; run; %macro dosim; %do i = 1 %to 1000; %corsamp; proc corr noprint out=corrtmp(where=(_type_ = 'CORR' and _name_ = 'x')) data=sim; var x y; run; proc append base=corrout new=corrtmp; run; %end; title 'using macro'; proc univariate plot data=corrout(rename = y = corr); var corr; run; %mend dosim; %dosim;