BookmarkSubscribeRSS Feed
Ronein
Meteorite | Level 14

Hello

There is a data set in work library.

I am trying to run a  simple query and get error 49.

I opened SAS again but nothing help.

May anyone help to understand what is going on and what action should be done to solve the issue?

11         ODS _ALL_ CLOSE;
4          %LET _CLIENTPROCESSFLOWNAME='Process Flow';
                                                    __
                                                    49
NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release.  Inserting white space 
             between a quoted string and the succeeding identifier is recommended.
7 REPLIES 7
ballardw
Super User

First thing, that is NOT and error, it is a Note.

For some reason SAS thinks there is a character other than a space between the ending quote and the semicolon. I don't see it, I can't generated that note using your code copied and pasted into my editor so I suspect that your code file may have a non-printable character of some sort that the forum software strips or ignores. I would suggest in your source code that you try deleting the characters after the second quote and retyping.

 

The note related to use of 'text' followed by another character(s) to indicate special treatment of the text. 'stupid-varname'n for name literals, '01JAN2022'd for date literals, '08:15:00't for time literals and/or '01Jan2022:08:15:00'dt for datetime literal values.

Ronein
Meteorite | Level 14

Thanks,

I run a very simple query  and I didnt write any quote in the code as you wrote.

I don't see the wanted data set qqq  because of error 49.

Data qqq;
set  r_r.L9;
Run;

The error is 

1                                                          The SAS System                             11:47 Wednesday, July 27, 2022

1          ;*';*";*/;quit;run;
2          OPTIONS PAGENO=MIN;
3          %LET _CLIENTTASKLABEL='Program';
4          %LET _CLIENTPROCESSFLOWNAME='Process Flow';
5          %LET _CLIENTPROJECTPATH='';
6          %LET _CLIENTPROJECTPATHHOST='';
7          %LET _CLIENTPROJECTNAME='';
8          %LET _SASPROGRAMFILE='';
9          %LET _SASPROGRAMFILEHOST='';
10         
11         ODS _ALL_ CLOSE;
12         OPTIONS DEV=PNG;

           _________________________________
           49
NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release.  Inserting white space 
             between a quoted string and the succeeding identifier is recommended.

13         FILENAME EGHTML TEMP;
14         ODS HTML(ID=EGHTML) FILE=EGHTML
15             ENCODING='utf-8'
16             STYLE=HTMLBlue
17             STYLESHEET=(URL="file:///C:/Program%20Files/SASHome/SASEnterpriseGuide/7.1/Styles/HTMLBlue.css")
18             NOGTITLE
19             NOGFOOTNOTE
20             GPATH=&sasworklocation
21         ;
NOTE: Line generated by the macro variable "SASWORKLOCATION".
21         ")    NOGTITLE    NOGFOOTNOTE
21       ! GPATH="/usr/local/saswork/SAS_work509E00000D90_LINX107717A15/SAS_workA43500000D90_LINX107717A15/"
                                                                                                           _
                                                                                                           49
NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release.  Inserting white space 
             between a quoted string and the succeeding identifier is recommended.
22         FILENAME EGSR TEMP;
23         ODS tagsets.sasreport13(ID=EGSR) FILE=EGSR
24             STYLE=HTMLBlue
25             STYLESHEET=(URL="file:///C:/Program%20Files/SASHome/SASEnterpriseGuide/7.1/Styles/HTMLBlue.css")
26             NOGTITLE
27             NOGFOOTNOTE
28             GPATH=&sasworklocation
29             ENCODING=UTF8
NOTE: Line generated by the macro variable "SASWORKLOCATION".
29         ")    NOGTITLE    NOGFOOTNOTE
29       ! GPATH="/usr/local/saswork/SAS_work509E00000D90_LINX107717A15/SAS_workA43500000D90_LINX107717A15/"

_____________________________________                                                                                               
                                                                                                           49
NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release.  Inserting white space 
             between a quoted string and the succeeding identifier is recommended.
30             options(rolap="on")
31         ;
32         
33         Data qqq;
34         set  r_r.L9;
35         Run;
36         
37         %LET _CLIENTTASKLABEL=;
2                                                          The SAS System                             11:47 Wednesday, July 27, 2022

38         %LET _CLIENTPROCESSFLOWNAME=;
39         %LET _CLIENTPROJECTPATH=;
40         %LET _CLIENTPROJECTPATHHOST=;
41         %LET _CLIENTPROJECTNAME=;
42         %LET _SASPROGRAMFILE=;
43         %LET _SASPROGRAMFILEHOST=;
44         
45         ;*';*";*/;quit;run;
46         ODS _ALL_ CLOSE;
47         
48         
49         QUIT; RUN;
50         
andreas_lds
Jade | Level 19

Have you restarted your SAS session? If not do so.

Ronein
Meteorite | Level 14

I found the source for error but I really can't understand it.

The problem was that there was extra (  in the code:

%step3(sourcetbl=Cars_To_Check_Cons_New, OfferField=offer_CARLOAN , productId=(('CP','NC' ,'AP'),t=10);

Surprisingly this code run well and I didn't get any error and the data sets were created well.

But after run this macro I run another short query that work on one of the data sets that were created in the macro and I saw error 49.

May anyone explain what happened? 

SASKiwi
PROC Star

Brackets operate in pairs. You have an opening bracket and no closing bracket, so the call of macro STEP3 is not correctly defined or ended. Hence following statements will get scrambled as well.  

Patrick
Opal | Level 21

@Ronein The main learning experience from this really must be that you ALWAYS need to create a new SAS session if you get such errors, warnings, notes etc. - especially if they occur at the very beginning.

Make it a habit that when you encounter an error that's not obvious to always first re-run in a new session before spending time investigating what could be caused by a leftover from an earlier run in an existing session.

eganx010
Calcite | Level 5

The error means that there is an unclosed quote.  When you use proc sql to enclose codes in quotes and separate them by commas, you have to hard code the first quote for the first code and the last quote for the last code, like this:

 

proc sql;

 select codes into:code_name separated by '", "'

from table;quit;

%put ("&code_names");

 

I always mess this up too.

 

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 7 replies
  • 5741 views
  • 2 likes
  • 6 in conversation