SameLabel.sas
%put WARNING: This code does not work.;
%put WARNING: modvar() is not available to Base SAS;
%macro SameLabel (source=, destination=);
%* label variables in destination the same as in source
%* Richard A. DeVenezia, 7/26/02
%*;
%local this srcId dstId i nvars varname varnum varlabel rc;
%let this = SameLabel;
%* open tables in utility mode;
%let srcId = %sysfunc (open (&source,V));
%let dstId = %sysfunc (open (&destination,V));
%if &srcId and &dstId %then %do;
%let nvars = %sysfunc (attrn (&srcId, nvars));
%do i = 1 %to &nvars;
%let varname = %sysfunc (varname (&srcId, &i));
%let varnum = %sysfunc (varnum (&dstId, &varname));
%if &varnum %then %do;
%let varlabel = %qsysfunc (varlabel (&srcId, &i));
%let rc = %sysfunc (modvar (&dstId, &varname, &varname, &varlabel));
%end;
%end;
%end;
%else %do;
%if &srcId = 0
%then %put ERROR: &this: Source [&source] could not be opened.;
%else %let srcId = %sysfunc (close (&srcId));
%if &dstId = 0
%then %put ERROR: &this: Destination [&destination] could not be opened.;
%else %let dstId = %sysfunc (close (&dstId));
%end;
%mend SameLabel; Sample code
/* data a; attrib a label='Aaaaa!' length=$8 b label='Beeee!' length= 8 c label='Ceeee!' length=$4 e label='Eeeyow' length=$1 f length=$1 g label='Ee"yow' length=$1 h label="Ee'yow" length=$1 i label="E""e'yow" length=$1 ; data b; attrib a length= 8 b length= 8 c length= 8 d length= 8 label='Original' f length= 4 label='Will be blank' g h i length = $4 ; run; %SameLabel (source=A, destination=B) */