One addendum to the code I am trying to write. It adds one more step by creating a sub folder within the each of the newly created folders (say, parent folders) where all the JSON files have been extracted to SAS data sets, and then renames all the SAS data sets into this new sub folder. The reason I need to rename the SAS data sets (to a shorter name) is that the length of many of these data set names is longer than 32 characters, and SAS errors out when working with those data sets. I have included the code for reference. It works fine with the first folder, where it creates that folder, extracts the JSON file into multiple data sets, creates a sub folder and renames those data sets. However, for all the subsequent parent folders where other JSON files have been extracted, it dos not carry out the next steps of creating a subfolder and renaming the data sets. Wondering what I am doing wrong. Also, is there a better way to address the name length >32 issue? Thank you again! %macro change_dsn(dsn_list,new_dsn_list); %local i next_name ; %do i=1 %to %sysfunc(countw(&dsn_list,%str( ))); %let next_name=%scan(&dsn_list,&i,%str( )); %let new_name = %scan(&new_dsn_list,&i,%str( )); libname dsn_in "C:\Zoot_response_Appl_1"; libname dsn_out "C:\Zoot_response_Appl_1\New_name_Appl_1"; %put &next_name &new_name; data dsn_out.&new_name; APP_ID = "Appl_1"; set dsn_in.&next_name; run; %end; %mend change_dsn; options dlcreatedir mprint; %macro create_dir(name_list); %local i next_name ; %do i=1 %to %sysfunc(countw(&name_list,%str( ))); %let next_name=%scan(&name_list,&i,%str( )); libname out "C:\Zoot_response_&next_name"; libname in json "C:\Zoot_response_&next_name..json"; proc copy inlib=in outlib=out; run; %change_dsn(DS1 DS2 DS3, A1 A2 A3) %end; %mend create_dir; %create_dir(Appl_1 Appl_2 Appl_3);
... View more