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

Hi All,

 

I need to create a csv file for each of the dataset present under a library, having the data of proc content output of each dataset.

A macro will solve this, i am able to get the list the dataset with:

 

proc sql;
create table columns as
select distinct(memname) as table_name
from dictionary.columns
where libname = 'WRK'
;
quit;

 

but how to proceed to read all the file names and fetch them to generate a csv having their proc contents is what i am stuck with...

 

Thanks in advance!!

1 ACCEPTED SOLUTION

Accepted Solutions
Kurt_Bremser
Super User

When you read from the sashelp tables, you can specify the filevar= option in the file statement and then dynamically assign the output filename from the table name in the input dataset. This way you can do everything in a single data step.

 

ie

data _null_;
set sashelp.vcolumn (where=(libname="YOURLIB"));
by memname;
if first.memname then outfilename = '$HOME/desc_' !! trim(memname) !! '.csv';
file "dummy.dat" filevar=outfilename dlm=',';
put name type length;
run;

View solution in original post

5 REPLIES 5
sAura
Fluorite | Level 6

Reading the metadata is not the issue, but reading it and putting it into a csv file as a loop for all the dataset within a library is the issue. A separate csv file needs to be created for the metadata of each dataset

Kurt_Bremser
Super User

When you read from the sashelp tables, you can specify the filevar= option in the file statement and then dynamically assign the output filename from the table name in the input dataset. This way you can do everything in a single data step.

 

ie

data _null_;
set sashelp.vcolumn (where=(libname="YOURLIB"));
by memname;
if first.memname then outfilename = '$HOME/desc_' !! trim(memname) !! '.csv';
file "dummy.dat" filevar=outfilename dlm=',';
put name type length;
run;
sAura
Fluorite | Level 6
Hi Kurt

Thanks for the resolution, but file creation is giving me an error:
1140 file "dummy.dat" filevar=outfilename dlm=',' ;
ERROR: A Physical file reference (i.e. "PHYSICAL FILE REFERENCE" ) or an aggregate file
storage reference (i.e. AGGREGATE(MEMBER) ) reference cannot be used with the FILEVAR=
option.


seems some limitation for the filevar value, is there a way to overcome this.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

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
  • 5 replies
  • 3650 views
  • 5 likes
  • 2 in conversation