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 (October 2002, week 4)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Tue, 22 Oct 2002 11:25:39 -0400
Reply-To:     "John J Genzano, III" <jgenzano@GENZANO.COM>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         "John J Genzano, III" <jgenzano@GENZANO.COM>
Subject:      Re: Macro variable in Macro Name
In-Reply-To:  <001f01c279dd$648ada70$6401a8c0@cx177980b>
Content-Type: text/plain; charset="us-ascii"

Your problem is not because of the variable name. There is a semi-colon missing somewhere in the code.

John J Genzano, III Principal Consultant Genzano Software Consulting 610-212-6111 609-822-0211 SAS Certified Professional, V6

"Anyone who cannot cope with mathematics is not fully human. At best he is a tolerable subhuman who has learned to wear shoes, bathe, and not make messes in the house." - Robert A. Heinlein

-----Original Message----- From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU] On Behalf Of Bill Anderson Sent: Tuesday, October 22, 2002 11:12 AM To: SAS-L@LISTSERV.UGA.EDU Subject: Macro variable in Macro Name

I would like to be able to name a macro, according to the value of a macro variable that is defined before the macro code. Here is a very abbreviated version of the code I tried.

%let suffix = ABC;

%macro that&suffix;

/* SAS code; */

%mend;

The intention is the the compiled macro would have the name thatABC, and then the statement %thatABC would invoke the macro. But the SAS macro compiler balks, and the log contains the messages:

ERROR: Expected semicolon not found. The macro will not be compiled.

ERROR: A dummy macro will be compiled.

According to the SAS MACRO manual (version 8, page 23), "You can use these [macro variable] references anywhere in a SAS program". I have learned to take this statement with a grain of salt, and the above situation seems to be another example. Any suggestions would be appreciated.

One might wonder why I would want to do such a thing. The reason is that I have a bunch of files which perform the same logical operation, although the specific macro code is quite different from file to file. (Actually about 10 different algorithms for data imputation, and I want details of the specific algorithm to remain hidden in the individual files.) I want to preserve as much parallelism as possible, and I successfully use the suffix in titles, variable labels, SAS data set names, and external file names. I would like to to be able to do the same thing with the macro names, but have come to the above described sticky point.


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