I don't think you need a macro.
Are the variable names in your dataset all the same and you just have different labels? And do those label always correspond to the dataset name. If so you just need a new variable specifying the name of the source dataset, and you will not have lost any information in the labels.
If so, then you can use the INDSNAME argument of the SET statement to get the dataset name as an identifier for each observation in your consolidated dataset:
data want_adm_rbc;
set mbuild.ADM_RBC: indsname=_dsn;
dsn=scan(_dsn,-1,'.');
run;
This reads every dataset in mbuild whose name starts with ADM_RBC. The variable _dsn (from "indsname=_dsn") has both the libname and dataset name, but it will be deleted at end of the data step. So I just stripped off the libname and saved the dataset name in the variable DSN (the rightmost text after a period). This should provide the information you need. If you have 54 such ADM_RBC datasets, you'll get 54 observations, with a new variable: DSN.
Just make sure that the SET statement accommodates all the datasets in mbuild that you want to consolidate.
... View more