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 (June 2000, week 1)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Tue, 6 Jun 2000 14:05:52 +0200
Reply-To:     Jim Groeneveld <J.Groeneveld@ITGROUPS.COM>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         Jim Groeneveld <J.Groeneveld@ITGROUPS.COM>
Subject:      Re: passing equal sign as a parameter in macro
Comments: To: Annie Chang <chang5a@YAHOO.COM>
Content-Type: text/plain


How about this:

%MACRO DeQuote (Arg); %LET Length = %LENGTH(&Arg); %IF %INDEX(%STR(%"%'),%QSUBSTR(&Arg,1,1)) AND &Length>1 AND %QSUBSTR(&Arg,&Length,1)=%QSUBSTR(&Arg,1,1) %THEN %SUBSTR(&Arg,2,%EVAL(&Length-2)); %ELSE &Arg; %MEND;

%MACRO Test (Arg); %PUT Arg=&Arg; %LET Arg = %DeQuote(&Arg); %PUT DeQuoted Arg=&Arg; %MEND;

%Test ("New=3"); %Test ('Old=2'); %Test (Single); %Test ("Embed"ded); %Test (%STR(%"Odd));

So you may pass a quoted argument with just single or double quotes to a macro and remove those quotes within the macro using the macro (function-like) %DEQUOTE. HTH - LMK.

Regards - Jim. -- Y. (Jim) Groeneveld, MSc IMRO TRAMARKO tel. +31 412 407 070 senior statistician, P.O. Box 1 fax. +31 412 407 080 head IT department 5350 AA BERGHEM IMRO TRAMARKO: a CRO the Netherlands in clinical research

My computer does not need me at all, but I can't do without it anymore.

> -----Original Message----- > From: Annie Chang [SMTP:chang5a@YAHOO.COM] > Sent: Tuesday, June 06, 2000 1:48 AM > To: SAS-L@LISTSERV.UGA.EDU > Subject: passing equal sign as a parameter in macro > > I think i have a hard question: > > %macro test ( var); > data tmp; > set dataset; > &var; > %mend; > > %test ( "new = 3"); > > What I am doing here? I am trying to pass an equal > sign "=" to the macro. > (don't complain about the silly example, I make it up > so that my question > is easier to explain). But it doesn't work. Since if I > quote it, > &var becomes > "new = 3"; > the quotation marks become errors. However, if I just > call it like > %test ( new = 3); > > sas will complain that there is no key parameter as > 'new'. i.e., sas treats > the equal sign as a default definition for a > parameter, and won't pass the > whole thing 'new = 3' to &var. > > I tried all those quote functions but to no avail. > Need an expert in SAS > to help!! > > Thank you. > > > > __________________________________________________ > Do You Yahoo!? > Yahoo! Photos -- now, 100 FREE prints! >

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