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

Hi,

 

I have  a list of several datasets in a library called Y_COMP which I am trying to append to each other but getting errors

 

The single  quotations are also part of the names

 

'DEC SUMMARY INBOUND SALES$'
'DEC SUMMARY OUTBOUND SALES$'
'DEC SUMMARY SERVICE$'
'FEB SUMMARY INBOUND SALES$'
'FEB SUMMARY OUTBOUND SALES$'
'FEB SUMMARY SERVICE ASSOCIATE$'
'JAN SUMMARY INBOUND SALES$'
'JAN SUMMARY OUTBOUND SALES$'
'JAN SUMMARY SERVICE$'
'MARCH SUMMARY OUTBOUND SALES$'

 

When running this  I am getting the error below:


PROC SQL;
SELECT MEMNAME INTO : MEMNAMES SEPARATED BY ' ' from dictionary.tables
where libname='Y_COMP';quit;

 

DATA WANT;
SET &MEMNAMES.;
RUN;

 

ERROR: THESE  FILES DONT EXIST:

DEC SUMMARY INBOUND SALES$
DEC SUMMARY OUTBOUND SALES$
DEC SUMMARY SERVICE$
FEB SUMMARY INBOUND SALES$
FEB SUMMARY OUTBOUND SALES$
FEB SUMMARY SERVICE ASSOCIATE$
JAN SUMMARY INBOUND SALES$
JAN SUMMARY OUTBOUND SALES$
JAN SUMMARY SERVICE$
MARCH SUMMARY OUTBOUND SALES$

 

and  this is  what I get when running this and  the max length of my names is 31 character

 

DATA WANT;
SET "&MEMNAMES."n;
RUN;

ERROR 307-185: The data set name cannot have more than 32 characters.

 

Any insights on this please?

 

Thx

1 ACCEPTED SOLUTION

Accepted Solutions
ballardw
Super User

Since you did not include the LIBRARY name in your original names of the data sets you wanted, I did not either.

 

PROC SQL;
   SELECT catt('Y_COMP.',quote(MEMNAME),'n') INTO : MEMNAMES SEPARATED BY ' ' 
   from dictionary.tables
   where libname='Y_COMP';
quit;

so you need to have the LIBRARY with EACH data set.

 

I go out of the way to avoid ever working with name literals for data sets or variables as they cause lots of headaches.

View solution in original post

4 REPLIES 4
ballardw
Super User

@Tal wrote:

Hi,

 

I have  a list of several datasets in a library called Y_COMP which I am trying to append to each other but getting errors

 

The single  quotations are also part of the names

 

'DEC SUMMARY INBOUND SALES$'
'DEC SUMMARY OUTBOUND SALES$'
'DEC SUMMARY SERVICE$'
'FEB SUMMARY INBOUND SALES$'
'FEB SUMMARY OUTBOUND SALES$'
'FEB SUMMARY SERVICE ASSOCIATE$'
'JAN SUMMARY INBOUND SALES$'
'JAN SUMMARY OUTBOUND SALES$'
'JAN SUMMARY SERVICE$'
'MARCH SUMMARY OUTBOUND SALES$'

 

When running this  I am getting the error below:


PROC SQL;
SELECT MEMNAME INTO : MEMNAMES SEPARATED BY ' ' from dictionary.tables
where libname='Y_COMP';quit;

 

DATA WANT;
SET &MEMNAMES.;
RUN;

 

ERROR: THESE  FILES DONT EXIST:

DEC SUMMARY INBOUND SALES$
DEC SUMMARY OUTBOUND SALES$
DEC SUMMARY SERVICE$
FEB SUMMARY INBOUND SALES$
FEB SUMMARY OUTBOUND SALES$
FEB SUMMARY SERVICE ASSOCIATE$
JAN SUMMARY INBOUND SALES$
JAN SUMMARY OUTBOUND SALES$
JAN SUMMARY SERVICE$
MARCH SUMMARY OUTBOUND SALES$

 

and  this is  what I get when running this and  the max length of my names is 31 character

 

DATA WANT;
SET "&MEMNAMES."n;
RUN;

ERROR 307-185: The data set name cannot have more than 32 characters.

 

Any insights on this please?

 

Thx


You are not building proper name literal values. Try

PROC SQL;
   SELECT catt(quote(MEMNAME),'n') INTO : MEMNAMES SEPARATED BY ' ' 
   from dictionary.tables
   where libname='Y_COMP';
quit;

and do not use quotes around &memnames.

 

EACH of your names has to have the quotes and 'n'.

You should have looked at what &memnames contained using a %put &memnames to see if each name was built properly for use in SET statement.

Tal
Pyrite | Level 9 Tal
Pyrite | Level 9

thanks for your  response ballardw but I am still getting errors:

 

 

ERROR: File WORK.'''DEC SUMMARY INBOUND SALES$'''n.DATA does not exist.

ERROR: File WORK.'''DEC SUMMARY OUTBOUND SALES$'''n.DATA does not exist.

ERROR: File WORK.'''DEC SUMMARY SERVICE$'''n.DATA does not exist.

ERROR: File WORK.'''FEB SUMMARY INBOUND SALES$'''n.DATA does not exist.

ERROR: File WORK.'''FEB SUMMARY OUTBOUND SALES$'''n.DATA does not exist.

ERROR: File WORK.'''FEB SUMMARY SERVICE ASSOCIATE$'''n.DATA does not exist.

 

The names of my datasets originally have single quotes  for example 'DEC SUMMARY INBOUND SALES$'  so  maybe that causes the errors?

ballardw
Super User

Since you did not include the LIBRARY name in your original names of the data sets you wanted, I did not either.

 

PROC SQL;
   SELECT catt('Y_COMP.',quote(MEMNAME),'n') INTO : MEMNAMES SEPARATED BY ' ' 
   from dictionary.tables
   where libname='Y_COMP';
quit;

so you need to have the LIBRARY with EACH data set.

 

I go out of the way to avoid ever working with name literals for data sets or variables as they cause lots of headaches.

Tal
Pyrite | Level 9 Tal
Pyrite | Level 9

right,  forgot the lib name

Thank you ballardw!

So much appreciated!

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

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
  • 4 replies
  • 3999 views
  • 0 likes
  • 2 in conversation