Skip to content

Instantly share code, notes, and snippets.

@shivallan
Last active August 29, 2015 14:20
Show Gist options
  • Select an option

  • Save shivallan/976c3796921dd1f22588 to your computer and use it in GitHub Desktop.

Select an option

Save shivallan/976c3796921dd1f22588 to your computer and use it in GitHub Desktop.
* Setting options for macro;
options MCOMPILENOTE = ALL MLOGIC MPRINT MPRINTNEST MLOGICNEST;
* Code for Output CLS;
ods html close; /* close previous */
ods html; /* open new */
* My macro for Task #4;
%macro mLookup(mvValue, mvTable, mvLookUpColumn, mvTargetColumn);
%local mvOpen;
%local mvClose;
%local mvCurValue;
%let mvOpen = %sysfunc(open(&mvTable));
%put mvOpen = &mvOpen;
%syscall set(mvOpen);
%let i=1;
%let j=1;
%do %while (&i <= (%sysfunc(attrn(&mvOpen, nobs))) and &j);
%let mvCurValue = %sysfunc(fetchobs(&mvOpen, &i));
%put mvLookUpColumn = &&&mvLookUpColumn;
%put mvValue = &mvValue;
%if &&&mvLookUpColumn = &mvValue %then
%do;
%put mvTargetColumn = &&&mvTargetColumn;
%let j = 0;
&&&mvTargetColumn;
%end;
%let i = %eval(&i+1);
%end;
%let mvClose = %sysfunc(close(&mvOpen));
%put mvClose = &mvClose.;
%mend;
* My macro finished;
* Test Table;
data test1;
var1=1; var2=9; output;
var1=2; var2=12; output;
var1=3; var2=25; output;
var1=4; var2=3; output;
run;
* Test macro;
%macro mtest2(mvVr);
data test3;
askldm=&mvVr;
run;
%mend;
* Macro call;
%mtest2(mvVr=%mLookup(mvValue = 4, mvTable = test1, mvLookUpColumn = var1, mvTargetColumn = var2););
data _null_;
d=%mLookup(mvValue = 3, mvTable = test1, mvLookUpColumn = var1, mvTargetColumn = var2);
put d=;
run;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment