Had to slightly change it but works nicely. Also took ballardw feedback and added an initial step that defines the variable format since I was getting things cut off due to character limits. Final Solution that seems to work nicely %MACRO CREATE_MERGE_LOGIC(LIBRARY, TABLE, KEY, VARIABLE, OUTPUT_VARIABLE, CODE_LOCATION);
DATA _null_;
SET SASHELP.VCOLUMN (WHERE = (LIBNAME = "&LIBRARY." AND MEMNAME = "&TABLE." AND NAME = "&VARIABLE."));
LENGTH VAR_FORMAT $700.;
file "&CODE_LOCATION." lrecl=700;
VAR_FORMAT = CAT('FORMAT ',SYMGET('OUTPUT_VARIABLE'),' ',TRIM(FORMAT),' ;');
PUT VAR_FORMAT;
RUN;
DATA _null_;
SET &LIBRARY..&TABLE.;
LENGTH CODE $700.;
file "&CODE_LOCATION." MOD lrecl=700;
IF _N_ > 1 THEN put "ELSE " @;
CODE = CAT('IF ',SYMGET('KEY'),' = ',ID,' THEN ',SYMGET('OUTPUT_VARIABLE'),' = "',TRIM(&VARIABLE.),'";');
PUT CODE;
RUN;
%MEND;
... View more