This is another somewhat parameterized version.
%let center=5;
%let block=6;
%let ratio = 1 1 2 2 3;
%let treat=%sysfunc(countw(%superq(ratio)));
%let subject=%eval(¢er*&block*&treat);
%put _global_;
proc format; value trt 1='Active Low Dose' 2='Active High Dose' 3='Placebo'; quit;
proc plan;
factors center=¢er ordered block=&block ordered treat=&treat random subject=1 of &subject perm / noprint;
output out=plan treat nvals=(&ratio) random;
run;
quit;
data plan;
retain SYSRANDOM &SYSRANDOM SYSRANEND &SYSRANEND;
set plan;
length usubjid $16;
usubjid = catx('-','XYZ-01',vvalue(center),vvalue(subject));
format subject center z3.;
run;
proc print;
run;
... View more