49%macro mp_makedata(libds
54%local ds1 ds2 lib ds pk_fields i col charvars numvars ispk;
56%
if %mf_islibds(&libds)=0 %then %
do;
57 %put &sysmacroname: Invalid libds (&libds) - should be library.dataset format;
60%
else %
if %mf_nobs(&libds)>0 %then %
do;
61 %put &sysmacroname: &libds has data, it will not be recreated;
66%let ds1=%mf_getuniquename(prefix=mp_makedatads1);
67%let ds2=%mf_getuniquename(prefix=mp_makedatads2);
68%let lib=%scan(&libds,1,.);
69%let ds=%scan(&libds,2,.);
72%mp_getpk(&lib,ds=&ds,outds=&ds1)
75select coalescec(pk_fields,
'_all_') into: pk_fields from &ds1;
80 %let charvars=%mf_getvarlist(&libds,typefilter=C);
81 %if &charvars ^= %then %do i=1 %to %sysfunc(countw(&charvars));
82 %let col=%scan(&charvars,&i);
84 &col=repeat(put(md5(cats(_n_)),$hex32.),%mf_getvarlen(&libds,&col)/32);
87 %let numvars=%mf_getvarlist(&libds,typefilter=N);
88 %if &numvars ^= %then %do i=1 %to %sysfunc(countw(&numvars));
89 %let col=%scan(&numvars,&i);
96proc sort data=&ds2 nodupkey;
100proc append base=&libds data=&ds2;
104drop table &ds1, &ds2;