50%macro mp_makedata(libds
55%local ds1 ds2 lib ds pk_fields i col charvars numvars ispk;
57%
if %mf_islibds(&libds)=0 %then %
do;
58 %put &sysmacroname: Invalid libds (&libds) - should be library.dataset format;
61%
else %
if %mf_nobs(&libds)>0 %then %
do;
62 %put &sysmacroname: &libds has data, it will not be recreated;
67%let ds1=%mf_getuniquename(prefix=mp_makedatads1);
68%let ds2=%mf_getuniquename(prefix=mp_makedatads2);
69%let lib=%scan(&libds,1,.);
70%let ds=%scan(&libds,2,.);
73%mp_getpk(&lib,ds=&ds,outds=&ds1)
76select coalescec(pk_fields,
'_all_') into: pk_fields from &ds1;
81 %let charvars=%mf_getvarlist(&libds,typefilter=C);
82 %if &charvars ^= %then %do i=1 %to %sysfunc(countw(&charvars));
83 %let col=%scan(&charvars,&i);
85 &col=repeat(put(md5(cats(_n_)),$hex32.),%mf_getvarlen(&libds,&col)/32);
88 %let numvars=%mf_getvarlist(&libds,typefilter=N);
89 %if &numvars ^= %then %do i=1 %to %sysfunc(countw(&numvars));
90 %let col=%scan(&numvars,&i);
97proc sort data=&ds2 nodupkey;
101proc append base=&libds data=&ds2;
105drop table &ds1, &ds2;