BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
covershaker45
Calcite | Level 5

Hello, I'm getting the following ERROR 22-322: Expecting a name.   First set of code works fine,  second set of code throwing an error.   I want to get away from having to enter the value in manually.

My code that work:
 /*******************************************************************************/
/***   Macro variables used for output file name and new column in file      ***/
/*******************************************************************************/
%let DataDte='EOD 12-27'n;
.
.
proc sql;
       create table Program_Issues_EMRO1 as
              select
                     'Enterprise'                                                    as Team
                 ,'EMRO-HLS'                                                    as Role
                 ,EMRO                                                             as Name
                 ,'Active + Inactive Model Count'                       as Catageory
                 ,count(*)                                                           as &DataDte
              from DetailData1
             
           Group by 1, 2, 3, 4;
quit;

 


My code that does not work:

&columndt is a macro variable that contains 'EOD 12-27'n  .    What is the issue,  seems to be the same value.
/*******************************************************************************/
/***   Macro variables used for output file name and new column in file      ***/
/*******************************************************************************/
%let DataDte=&columndt;
.
.
proc sql;
       create table Program_Issues_EMRO1 as
              select
                     'Enterprise'                                                    as Team
                 ,'EMRO-HLS'                                                    as Role
                 ,EMRO                                                             as Name
                 ,'Active + Inactive Model Count'                       as Catageory
                 ,count(*)                                                           as &DataDte
              from DetailData1
             
           Group by 1, 2, 3, 4;
quit;

   

1 ACCEPTED SOLUTION

Accepted Solutions
s_lassen
Meteorite | Level 14

It sounds like you have a macro quoting problem. My guess is that the COLUMNDT variable was constructed something like

%let ColumnDt=%str(%'&someothervariable%'n);

The SAS processor cannot understand that quoted value as a name. I can replicate your error like this:

%let x=%str(%' x value%'n);
%put &x;

proc sql;
  select name as &x from sashelp.class;
quit;

but when I use %unquote(&x) instead of &x (as suggested by @gamotte ), the program works OK.

 

If you are using the DataDte variable in many places, you may want to do the %unquoting there:

%let DataDte=%unquote(&ColumnDt);

and then leave the rest of your program unchanged.

 

Or you can do the unquoting on the original ColumnDt variable, if that makes for better code.

View solution in original post

9 REPLIES 9
Kurt_Bremser
Super User

Please add

options mprint symbolgen;

to your code, and then post the complete log from it by copy/pasting into a window opened with the </> button.

covershaker45
Calcite | Level 5

See snippet of the log.   Not able to attach the entire log as it 3 MB and  would trigger a security event.


SYMBOLGEN:  Macro variable HLDDATE resolves to 'EOD 12-27'n
 SYMBOLGEN:  Some characters in the above value which were subject to macro quoting have been unquoted for printing.
 'EOD 12-27'n
 SYMBOLGEN:  Macro variable HLDDATE resolves to 'EOD 12-27'n
 SYMBOLGEN:  Some characters in the above value which were subject to macro quoting have been unquoted for printing.
 SYMBOLGEN:  Macro variable DATADTE resolves to 'EOD 12-27'n
 SYMBOLGEN:  Some characters in the above value which were subject to macro quoting have been unquoted for printing.
 'EOD 12-27'n
 SYMBOLGEN:  Macro variable FILEDT resolves to 20201227
 SYMBOLGEN:  Macro variable PATH1 resolves to /users/emrmra/Dwight/Daily Monitoring and Escalation Report
 SYMBOLGEN:  Macro variable DATADTE2 resolves to 20201227
 SYMBOLGEN:  Macro variable HISDATA resolves to Cw3000
 SYMBOLGEN:  Macro variable DATADTE resolves to 'EOD 12-27'n
 SYMBOLGEN:  Some characters in the above value which were subject to macro quoting have been unquoted for printing.
 
            _
            22
            76
 ERROR 22-322: Expecting a name. 
 
 ERROR 76-322: Syntax error, statement will be ignored.
 
 SYMBOLGEN:  Macro variable DATADTE resolves to 'EOD 12-27'n
 SYMBOLGEN:  Some characters in the above value which were subject to macro quoting have been unquoted for printing.
 

Kurt_Bremser
Super User

This code

%let DataDte=&columndt;
.
.
proc sql;
       create table Program_Issues_EMRO1 as
              select
                     'Enterprise'                                                    as Team
                 ,'EMRO-HLS'                                                    as Role
                 ,EMRO                                                             as Name
                 ,'Active + Inactive Model Count'                       as Catageory
                 ,count(*)                                                           as &DataDte
              from DetailData1
             
           Group by 1, 2, 3, 4;
quit;

CANNOT produce a 3 MB log. If it hits a syntax ERROR, the log will in fact be very short.

covershaker45
Calcite | Level 5

Correct that is only a sample of the code.  The entire code is 15000+ lines.    

‘EOD 12-25’  will be used as an alias for the count(*) in the SQL, so it would become a variable name.      As mentioned previously if I use %let DataDte = ‘EOD 12-25’n   it works.    It fails when I replace ‘EOD 12-25’  with a macro variable with same value.


Code that work:
/*******************************************************************************/
/***   Macro variables used for output file name and new column in file      ***/
/*******************************************************************************/
%let DataDte='EOD 12-27'n;
.
.
proc sql;
       create table Program_Issues_EMRO1 as
              select
                     'Enterprise'                                                  as Team
                 ,'EMRO-HLS'                                                    as Role
                 ,EMRO                                                                as Name
                 ,'Active + Inactive Model Count'              as Catageory
                 ,count(*)                                     as &DataDte
              from DetailData1
             
           Group by 1, 2, 3, 4;
quit;

 


Code does not work:
&columndt is a macro variable that contains 'EOD 12-27'n  .    What is the issue,  seems to be the same value.
/*******************************************************************************/
/***   Macro variables used for output file name and new column in file      ***/
/*******************************************************************************/
%let DataDte=&columndt;
.
.
proc sql;
       create table Program_Issues_EMRO1 as
              select
                     'Enterprise'                                                  as Team
                 ,'EMRO-HLS'                                                    as Role
                 ,EMRO                                                                as Name
                 ,'Active + Inactive Model Count'              as Catageory
                 ,count(*)                                     as &DataDte
              from DetailData1
             
           Group by 1, 2, 3, 4;
quit;

 

Kurt_Bremser
Super User

Please run this code (and nothing else)

%let DataDte=&columndt;

proc sql;
       create table Program_Issues_EMRO1 as
              select
                     'Enterprise'                                                    as Team
                 ,'EMRO-HLS'                                                    as Role
                 ,EMRO                                                             as Name
                 ,'Active + Inactive Model Count'                       as Catageory
                 ,count(*)                                                           as &DataDte
              from DetailData1
             
           Group by 1, 2, 3, 4;
quit;

so we can localize the problem.

covershaker45
Calcite | Level 5

Had to add additional code to bring in data.  Below code got error

 

options mlogic mprint merror nosource nonotes missing=0 symbolgen;
%put _automatic_;

libname Myfiles '/users/emrmra/Dwight/Daily Monitoring and Escalation Report';

%let path1=/users/emrmra/Dwight/Daily Monitoring and Escalation Report;
%let path2=/users/emrmra/Dwight/Daily Monitoring and Escalation Report;

/*******************************************************************************/
/***   Macro variables used for output file name and new column in file      ***/
/*******************************************************************************/

%let columndt=EOD 12-27;
%let filedt = 20201227;

%put &columndt.;
%let HldDate=%str(%')%trim(&columndt)%str(%')n;
%put &HldDate.;

%let DataDte=&HldDate;
%put &DataDte.;

%let DataDte2=&filedt;
%let hisdata=Cw3000;


/*******************************************************************************/
/***                     Importing Inventory file from DMER                  ***/
/*******************************************************************************/
proc import out=dir
 datafile="&path1/Daily Monitoring and Escalation Report_Enterprise.&DataDte2..xlsx"
 dbms=xlsx replace;
 getnames=yes;
 range="Inventory$A2:&hisdata.";
run;

/*******************************************************************************/
/***                     Filtering DMER Inventory for CCAR only              ***/
/*******************************************************************************/
Data DetailData1;
 set Dir;
 if 'Used in CCAR'n = 'Y';
  length EMRO $40.;
 EMRO = 'Doe, John';
run;

/*******************************************************************************/
/***        Creating the different metrics (EMRO, MRO, MVL levels)           ***/
/*******************************************************************************/

proc sql;
 create table Program_Issues_EMRO1 as
  select
   'Enterprise'        as Team
     ,'EMRO-HLS'        as Role
     ,EMRO          as Name
     ,'Active + Inactive Model Count'        as Catageory
     ,count(*)                       as &DataDte
  from DetailData1
  
     Group by 1, 2, 3, 4;
quit;

 

 

1          OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 INFO: Character variables have defaulted to a length of 200 at the places given by: (Line):(Column). Truncation can result.
       40:1     RC
 SYMBOLGEN:  Macro variable _SASWSTEMP_ resolves to /home/nbddqv2/.sasstudio/.images/00f84f34-44fe-4040-8412-6af524637b24
 SYMBOLGEN:  Some characters in the above value which were subject to macro quoting have been unquoted for printing.
 SYMBOLGEN:  Macro variable GRAPHINIT resolves to GOPTIONS RESET=ALL GSFNAME=_GSFNAME;
 72        
 73         options mlogic mprint merror nosource nonotes missing=0 symbolgen;
 AUTOMATIC AFDSID 0
 AUTOMATIC AFDSNAME
 AUTOMATIC AFLIB
 AUTOMATIC AFSTR1
 AUTOMATIC AFSTR2
 AUTOMATIC FSPBDV
 AUTOMATIC SYSADDRBITS 64
 AUTOMATIC SYSBUFFR
 AUTOMATIC SYSCC 0
 AUTOMATIC SYSCHARWIDTH 1
 AUTOMATIC SYSCMD
 AUTOMATIC SYSDATASTEPPHASE
 AUTOMATIC SYSDATE 28DEC20
 AUTOMATIC SYSDATE9 28DEC2020
 AUTOMATIC SYSDAY Monday
 AUTOMATIC SYSDEVIC
 AUTOMATIC SYSDMG 0
 AUTOMATIC SYSDSN WORK    PROGRAM_ISSUES_EMRO1                                              
 AUTOMATIC SYSENCODING latin1
 AUTOMATIC SYSENDIAN LITTLE
 AUTOMATIC SYSENV BACK
 AUTOMATIC SYSERR 0
 AUTOMATIC SYSERRORTEXT 76-322: Syntax error, statement will be ignored.                          
 AUTOMATIC SYSFILRC 0
 AUTOMATIC SYSHOSTINFOLONG Linux LIN X64 3.10.0-1160.2.2.el7.x86_64 #1 SMP Sat Oct 17 05:06:47 UTC 2020 x86_64 Red Hat Enterprise
 Linux Server release 7.9 (Maipo)
 AUTOMATIC SYSHOSTNAME lrdna455papdri
 AUTOMATIC SYSINCLUDEFILEDEVICE
 AUTOMATIC SYSINCLUDEFILEDIR
 AUTOMATIC SYSINCLUDEFILEFILEREF
 AUTOMATIC SYSINCLUDEFILENAME
 AUTOMATIC SYSINDEX 18
 AUTOMATIC SYSINFO 0
 AUTOMATIC SYSJOBID 18312
 AUTOMATIC SYSLAST WORK.PROGRAM_ISSUES_EMRO1
 AUTOMATIC SYSLCKRC 0
 AUTOMATIC SYSLIBRC 0
 AUTOMATIC SYSLOGAPPLNAME
 AUTOMATIC SYSMACRONAME
 AUTOMATIC SYSMAXLONG 9007199254740992
 AUTOMATIC SYSMENV S
 AUTOMATIC SYSMSG
 AUTOMATIC SYSNCPU 16                 
 AUTOMATIC SYSNOBS 1811
 AUTOMATIC SYSODSESCAPECHAR 03
 AUTOMATIC SYSODSGRAPHICS 1
 AUTOMATIC SYSODSPATH  WORK.TEMPLAT(UPDATE) SASUSER.TEMPLAT(READ) SASHELP.TMPLMST(READ)
 AUTOMATIC SYSPARM
 AUTOMATIC SYSPRINTTOLOG
 AUTOMATIC SYSPRINTTOLIST
 AUTOMATIC SYSPROCESSID 41DCAE80A8785ACD4018000000000000
 AUTOMATIC SYSPROCESSMODE SAS Workspace Server
 AUTOMATIC SYSPROCESSNAME Object Server
 AUTOMATIC SYSPROCNAME
 AUTOMATIC SYSRC 0
 AUTOMATIC SYSSCP LIN X64
 AUTOMATIC SYSSCPL Linux
 AUTOMATIC SYSSITE 70132342
 AUTOMATIC SYSSIZEOFLONG 8
 AUTOMATIC SYSSIZEOFPTR 8
 AUTOMATIC SYSSIZEOFUNICODE 4
 AUTOMATIC SYSSTARTID
 AUTOMATIC SYSSTARTNAME
 AUTOMATIC SYSTCPIPHOSTNAME lrdna455papdri.usrdnwx.amrs.bankofamerica.com
 AUTOMATIC SYSTIME 16:43
 AUTOMATIC SYSTIMEZONE GMT-05:00
 AUTOMATIC SYSTIMEZONEIDENT ETC/GMT+5
 AUTOMATIC SYSTIMEZONEOFFSET -18000
 AUTOMATIC SYSUSERID nbddqv2
 AUTOMATIC SYSVER 9.4    
 AUTOMATIC SYSVLONG 9.04.01M6P110718
 AUTOMATIC SYSVLONG4 9.04.01M6P11072018
 AUTOMATIC SYSWARNINGTEXT The data set WORK.DETAILDATA1 may be incomplete.  When this step was stopped there were 0 observations and
 2 variables.
 SYMBOLGEN:  Macro variable COLUMNDT resolves to EOD 12-27
 EOD 12-27
 MLOGIC(TRIM):  Beginning execution.
 MLOGIC(TRIM):  This macro was compiled from the autocall file /sasgrid/prd/sashome/SASFoundation/9.4/sasautos/trim.sas
 SYMBOLGEN:  Macro variable COLUMNDT resolves to EOD 12-27
 MLOGIC(TRIM):  Parameter VALUE has value EOD 12-27
 MLOGIC(TRIM):  %LOCAL  I
 SYMBOLGEN:  Macro variable VALUE resolves to EOD 12-27
 MLOGIC(TRIM):  %DO loop beginning; index variable I; start value is 9; stop value is 1; by value is -1. 
 SYMBOLGEN:  Macro variable VALUE resolves to EOD 12-27
 SYMBOLGEN:  Macro variable I resolves to 9
 MLOGIC(TRIM):  %IF condition %qsubstr(&value,&i,1) ne   is TRUE
 MLOGIC(TRIM):  %GOTO TRIMMED (label resolves to TRIMMED).
 SYMBOLGEN:  Macro variable I resolves to 9
 MLOGIC(TRIM):  %IF condition &i>0 is TRUE
 SYMBOLGEN:  Macro variable VALUE resolves to EOD 12-27
 SYMBOLGEN:  Macro variable I resolves to 9
 MLOGIC(TRIM):  Ending execution.
 SYMBOLGEN:  Macro variable HLDDATE resolves to 'EOD 12-27'n
 SYMBOLGEN:  Some characters in the above value which were subject to macro quoting have been unquoted for printing.
 'EOD 12-27'n
 SYMBOLGEN:  Macro variable HLDDATE resolves to 'EOD 12-27'n
 SYMBOLGEN:  Some characters in the above value which were subject to macro quoting have been unquoted for printing.
 SYMBOLGEN:  Macro variable DATADTE resolves to 'EOD 12-27'n
 SYMBOLGEN:  Some characters in the above value which were subject to macro quoting have been unquoted for printing.
 'EOD 12-27'n
 SYMBOLGEN:  Macro variable FILEDT resolves to 20201227
 SYMBOLGEN:  Macro variable PATH1 resolves to /users/emrmra/Dwight/Daily Monitoring and Escalation Report
 SYMBOLGEN:  Macro variable DATADTE2 resolves to 20201227
 SYMBOLGEN:  Macro variable HISDATA resolves to Cw3000
 SYMBOLGEN:  Macro variable DATADTE resolves to 'EOD 12-27'n
 SYMBOLGEN:  Some characters in the above value which were subject to macro quoting have been unquoted for printing.
 
            _
            22
            76
 ERROR 22-322: Expecting a name. 
 
 ERROR 76-322: Syntax error, statement will be ignored.
 
 SYMBOLGEN:  Macro variable GRAPHTERM resolves to GOPTIONS NOACCESSIBLE;
 150       

 

 

 

 

Below code ran without errors.

options mlogic mprint merror nosource nonotes missing=0 symbolgen;
%put _automatic_;

libname Myfiles '/users/emrmra/Dwight/Daily Monitoring and Escalation Report';

%let path1=/users/emrmra/Dwight/Daily Monitoring and Escalation Report;
%let path2=/users/emrmra/Dwight/Daily Monitoring and Escalation Report;

/*******************************************************************************/
/***   Macro variables used for output file name and new column in file      ***/
/*******************************************************************************/

%let filedt = 20201227;

%let HldDate='EOD 12-27'n;
%put &HldDate.;

%let DataDte=&HldDate;
%put &DataDte.;

%let DataDte2=&filedt;
%let hisdata=Cw3000;

/*******************************************************************************/
/***                     Importing Inventory file from DMER                  ***/
/*******************************************************************************/
proc import out=dir
 datafile="&path1/Daily Monitoring and Escalation Report_Enterprise.&DataDte2..xlsx"
 dbms=xlsx replace;
 getnames=yes;
 range="Inventory$A2:&hisdata.";
run;

/*******************************************************************************/
/***                     Filtering DMER Inventory for CCAR only              ***/
/*******************************************************************************/
Data DetailData1;
 set Dir;
 if 'Used in CCAR'n = 'Y';
  length EMRO $40.;
 EMRO = 'Doe, John';
run;

/*******************************************************************************/
/***        Creating the different metrics (EMRO, MRO, MVL levels)           ***/
/*******************************************************************************/

proc sql;
 create table Program_Issues_EMRO1 as
  select
   'Enterprise'        as Team
     ,'EMRO-HLS'        as Role
     ,EMRO          as Name
     ,'Active + Inactive Model Count'        as Catageory
     ,count(*)                       as &DataDte
  from DetailData1
  
     Group by 1, 2, 3, 4;
quit;

 

1          OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 INFO: Character variables have defaulted to a length of 200 at the places given by: (Line):(Column). Truncation can result.
       40:1     RC
 SYMBOLGEN:  Macro variable _SASWSTEMP_ resolves to /home/nbddqv2/.sasstudio/.images/a46a955f-4b3f-4139-a6ae-f9da2c11f70c
 SYMBOLGEN:  Some characters in the above value which were subject to macro quoting have been unquoted for printing.
 SYMBOLGEN:  Macro variable GRAPHINIT resolves to GOPTIONS RESET=ALL GSFNAME=_GSFNAME;
 72        
 73         options mlogic mprint merror nosource nonotes missing=0 symbolgen;
 AUTOMATIC AFDSID 0
 AUTOMATIC AFDSNAME
 AUTOMATIC AFLIB
 AUTOMATIC AFSTR1
 AUTOMATIC AFSTR2
 AUTOMATIC FSPBDV
 AUTOMATIC SYSADDRBITS 64
 AUTOMATIC SYSBUFFR
 AUTOMATIC SYSCC 0
 AUTOMATIC SYSCHARWIDTH 1
 AUTOMATIC SYSCMD
 AUTOMATIC SYSDATASTEPPHASE
 AUTOMATIC SYSDATE 28DEC20
 AUTOMATIC SYSDATE9 28DEC2020
 AUTOMATIC SYSDAY Monday
 AUTOMATIC SYSDEVIC
 AUTOMATIC SYSDMG 0
 AUTOMATIC SYSDSN WORK    PROGRAM_ISSUES_EMRO1                                              
 AUTOMATIC SYSENCODING latin1
 AUTOMATIC SYSENDIAN LITTLE
 AUTOMATIC SYSENV BACK
 AUTOMATIC SYSERR 0
 AUTOMATIC SYSERRORTEXT 76-322: Syntax error, statement will be ignored.                          
 AUTOMATIC SYSFILRC 0
 AUTOMATIC SYSHOSTINFOLONG Linux LIN X64 3.10.0-1160.2.2.el7.x86_64 #1 SMP Sat Oct 17 05:06:47 UTC 2020 x86_64 Red Hat Enterprise
 Linux Server release 7.9 (Maipo)
 AUTOMATIC SYSHOSTNAME lrdna455papdri
 AUTOMATIC SYSINCLUDEFILEDEVICE
 AUTOMATIC SYSINCLUDEFILEDIR
 AUTOMATIC SYSINCLUDEFILEFILEREF
 AUTOMATIC SYSINCLUDEFILENAME
 AUTOMATIC SYSINDEX 18
 AUTOMATIC SYSINFO 0
 AUTOMATIC SYSJOBID 18312
 AUTOMATIC SYSLAST WORK.PROGRAM_ISSUES_EMRO1
 AUTOMATIC SYSLCKRC 0
 AUTOMATIC SYSLIBRC 0
 AUTOMATIC SYSLOGAPPLNAME
 AUTOMATIC SYSMACRONAME
 AUTOMATIC SYSMAXLONG 9007199254740992
 AUTOMATIC SYSMENV S
 AUTOMATIC SYSMSG
 AUTOMATIC SYSNCPU 16                 
 AUTOMATIC SYSNOBS 1811
 AUTOMATIC SYSODSESCAPECHAR 03
 AUTOMATIC SYSODSGRAPHICS 1
 AUTOMATIC SYSODSPATH  WORK.TEMPLAT(UPDATE) SASUSER.TEMPLAT(READ) SASHELP.TMPLMST(READ)
 AUTOMATIC SYSPARM
 AUTOMATIC SYSPRINTTOLOG
 AUTOMATIC SYSPRINTTOLIST
 AUTOMATIC SYSPROCESSID 41DCAE80A8785ACD4018000000000000
 AUTOMATIC SYSPROCESSMODE SAS Workspace Server
 AUTOMATIC SYSPROCESSNAME Object Server
 AUTOMATIC SYSPROCNAME
 AUTOMATIC SYSRC 0
 AUTOMATIC SYSSCP LIN X64
 AUTOMATIC SYSSCPL Linux
 AUTOMATIC SYSSITE 70132342
 AUTOMATIC SYSSIZEOFLONG 8
 AUTOMATIC SYSSIZEOFPTR 8
 AUTOMATIC SYSSIZEOFUNICODE 4
 AUTOMATIC SYSSTARTID
 AUTOMATIC SYSSTARTNAME
 AUTOMATIC SYSTCPIPHOSTNAME lrdna455papdri.usrdnwx.amrs.bankofamerica.com
 AUTOMATIC SYSTIME 16:43
 AUTOMATIC SYSTIMEZONE GMT-05:00
 AUTOMATIC SYSTIMEZONEIDENT ETC/GMT+5
 AUTOMATIC SYSTIMEZONEOFFSET -18000
 AUTOMATIC SYSUSERID nbddqv2
 AUTOMATIC SYSVER 9.4    
 AUTOMATIC SYSVLONG 9.04.01M6P110718
 AUTOMATIC SYSVLONG4 9.04.01M6P11072018
 AUTOMATIC SYSWARNINGTEXT The data set WORK.DETAILDATA1 may be incomplete.  When this step was stopped there were 0 observations and
 2 variables.
 SYMBOLGEN:  Macro variable HLDDATE resolves to 'EOD 12-27'n
 'EOD 12-27'n
 SYMBOLGEN:  Macro variable HLDDATE resolves to 'EOD 12-27'n
 SYMBOLGEN:  Macro variable DATADTE resolves to 'EOD 12-27'n
 'EOD 12-27'n
 SYMBOLGEN:  Macro variable FILEDT resolves to 20201227
 SYMBOLGEN:  Macro variable PATH1 resolves to /users/emrmra/Dwight/Daily Monitoring and Escalation Report
 SYMBOLGEN:  Macro variable DATADTE2 resolves to 20201227
 SYMBOLGEN:  Macro variable HISDATA resolves to Cw3000
 SYMBOLGEN:  Macro variable DATADTE resolves to 'EOD 12-27'n
 SYMBOLGEN:  Macro variable GRAPHTERM resolves to GOPTIONS NOACCESSIBLE;
 146       

 

gamotte
Rhodochrosite | Level 12

Hello,

 

Why don't you use valid SAS variable names ? You wouldn't have to deal with quoting problems.

gamotte
Rhodochrosite | Level 12

If you can't changevariables names, you can try :

 

,count(*)        as %unquote(&DataDte.)

How was DataDte generated ?

s_lassen
Meteorite | Level 14

It sounds like you have a macro quoting problem. My guess is that the COLUMNDT variable was constructed something like

%let ColumnDt=%str(%'&someothervariable%'n);

The SAS processor cannot understand that quoted value as a name. I can replicate your error like this:

%let x=%str(%' x value%'n);
%put &x;

proc sql;
  select name as &x from sashelp.class;
quit;

but when I use %unquote(&x) instead of &x (as suggested by @gamotte ), the program works OK.

 

If you are using the DataDte variable in many places, you may want to do the %unquoting there:

%let DataDte=%unquote(&ColumnDt);

and then leave the rest of your program unchanged.

 

Or you can do the unquoting on the original ColumnDt variable, if that makes for better code.

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

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
  • 9 replies
  • 12216 views
  • 3 likes
  • 4 in conversation