The SAS Output Delivery System and reporting techniques

Remove quotes from macro variable LET

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 133
Accepted Solution

Remove quotes from macro variable LET

Hi SAS Experts,

 

I am creating a macro variable %LET RepQuarter = '4th (October-December)'; and insert it later on

in my custom ods xml tagset.

 

        define event EmitMetaMainMessage;
            xdent;
            put "</Metas>" CR;
            put "<main>" CR;
            put "<year>&RepYear" ;
            put "</year>" CR;
            put "<quarter>&RepQuarter" ;
            put "</quarter>" CR;
        end;

 

But I need it without the quotes'. How can I remove those?

 

Bye


Accepted Solutions
Solution
‎10-07-2015 08:00 AM
PROC Star
Posts: 1,294

Re: Remove quotes from macro variable LET

Agree with @RW9 about not adding the quotes in the first place.  But if you want to remove them, you can use the DEQUOTE function.

 

1    %LET RepQuarter = '4th (October-December)';
2
3    data _null_;
4      put "<quarter>&RepQuarter" ;
5      put "<quarter>%sysfunc(dequote(&RepQuarter))" ;
6    run;

<quarter>'4th (October-December)'
<quarter>4th (October-December)

 

View solution in original post


All Replies
Super User
Super User
Posts: 7,727

Re: Remove quotes from macro variable LET

Hi,

 

Why have you put quotes on it in the first place?

%LET RepQuarter = 4th (October-December);

Problem solved.  The next question is, why is data in a macro parameter?

Frequent Contributor
Posts: 133

Re: Remove quotes from macro variable LET

Greetings!
Unfortunately the problem is not solved be removing the quotes:

NOTE: Line generated by the macro variable "REPQUARTER".
252 4th (October-December)
__
22
76
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, ',', -, /, <, <=, <>, =, >, >=, ?, AND, BETWEEN,
CONTAINS, EQ, EQT, GE, GET, GT, GTT, LE, LET, LIKE, LT, LTT, NE, NET, OR, ^=, |, ||, ~=.

ERROR 76-322: Syntax error, statement will be ignored.

The next question is not really a problem I have. I use the variable at various points in the code.
Frequent Contributor
Posts: 133

Re: Remove quotes from macro variable LET

Hi RW9,

The problem is not solved by removing the quotes.

NOTE: Line generated by the macro variable "REPQUARTER".
252 4th (October-December)
__
22
76
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, ',', -, /, <, <=, <>, =, >, >=, ?, AND, BETWEEN,
CONTAINS, EQ, EQT, GE, GET, GT, GTT, LE, LET, LIKE, LT, LTT, NE, NET, OR, ^=, |, ||, ~=.

ERROR 76-322: Syntax error, statement will be ignored.

The second question is not really a problem I have. I just use the macro at various places in the code.
Super User
Super User
Posts: 7,727

Re: Remove quotes from macro variable LET

Yes, but then you haven't thought about the data, and the process then have you.  If you need parameters, put them into a dataset, its is far easier to work with.  Datasets are there to work with Data, macro variables are there as find and replace, and as you are seeing in your example, that find and replace fails as you are using it in multiple ways.

Solution
‎10-07-2015 08:00 AM
PROC Star
Posts: 1,294

Re: Remove quotes from macro variable LET

Agree with @RW9 about not adding the quotes in the first place.  But if you want to remove them, you can use the DEQUOTE function.

 

1    %LET RepQuarter = '4th (October-December)';
2
3    data _null_;
4      put "<quarter>&RepQuarter" ;
5      put "<quarter>%sysfunc(dequote(&RepQuarter))" ;
6    run;

<quarter>'4th (October-December)'
<quarter>4th (October-December)

 

🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 5 replies
  • 597 views
  • 0 likes
  • 3 in conversation