LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (December 1998, week 5)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:   Wed, 30 Dec 1998 16:36:31 -0500
Reply-To:   James Carter <jcarter@SCTCORP.COM>
Sender:   "SAS(r) Discussion" <SAS-L@UGA.CC.UGA.EDU>
From:   James Carter <jcarter@SCTCORP.COM>
Subject:   Macro params > 200 chars long...resolved!
Content-type:   text/plain; charset=us-ascii

Thanks to all who responded on my macro parameter question - all good replies. Special thanks to Jack Hamilton - the use of "IN" is a winner for me!

My original "problem" code:

%MACRO MAC(VARLIST=,FLAG=); DATA _NULL_; GOTIT = 0; IF INDEX("&VARLIST","VARNAME5") > 0 THEN GOTIT = 1; IF GOTIT THEN DO; PUT "GOT IT!"; END; RUN; %MEND;

%MAC( VARLIST=VARNAME1 VARNAME2 VARNAME3 VARNAME4 VARNAME5, FLAG=1 );

And the same code, now fixed using "IN" and a macro loop to create the quoted look-up string:

%MACRO MAC(VARLIST=,FLAG=); %let n=1; %let varqlist=; %let word=%qscan(&varlist,&n); %do %while (&word ne); %let varqlist = &varqlist "&word"; %let n=%eval(&n+1); %let word=%qscan(&varlist,&n); %end;

DATA _NULL_; GOTIT = 0; TEMP = "VARNAME49"; IF TEMP IN (&varqlist) THEN GOTIT = 1; IF GOTIT THEN DO; PUT "GOT IT!"; END; RUN; %MEND;

%MAC( VARLIST=VARNAME1 VARNAME2 VARNAME3 VARNAME4 VARNAME5 VARNAME6 VARNAME7 VARNAME8 VARNAME9 VARNAME10 VARNAME11 VARNAME12 VARNAME13 VARNAME14 VARNAME15 VARNAME16 VARNAME17 VARNAME18 VARNAME19 VARNAME20 VARNAME21 VARNAME14 VARNAME15 VARNAME16 VARNAME17 VARNAME18 VARNAME19 VARNAME20 VARNAME21 VARNAME22 VARNAME23 VARNAME24 VARNAME25 VARNAME26 VARNAME27 VARNAME28 VARNAME29 VARNAME30 VARNAME31 VARNAME32 VARNAME33 VARNAME34 VARNAME35 VARNAME36 VARNAME37 VARNAME38 VARNAME39 VARNAME40 VARNAME41 VARNAME42 VARNAME43 VARNAME44 VARNAME45 VARNAME46 VARNAME47 VARNAME48 VARNAME49 VARNAME50, FLAG=1 );

This is just absolutely too cool! Good old SAS...

Thanks again to all -- and Happy New Year!

Jim Carter


Back to: Top of message | Previous page | Main SAS-L page