This is pretty simple if you have a reasonable way to identify them in your code.
Here is a simple answer:
%macro makeCSV(dataset=); proc export data=&dataset. file="&dataset..csv" dbms=csv replace; run; *modify export if needed; %mend makeCSV; proc sql; select cats('%makeCSV(dataset=',memname,')') into :makeCSVlist separated by ' ' from dictionary.tables where libname='YOURLIB' and memname like 'FORCSV'; quit; *or whatever logic identifies these 720 or whatnot datasets; &makeCSVlist; *actually runs the macro calls;
Now, perhaps quite slowly, but it should work. It would be faster to not have 720 data sets, except for one data set, and write the code in the data step using the FILEVAR = parameter. This gets a little more complicated if you have a huge amount of variables (since you need to write a put statement), but even then you can generate code like the one I just used with the dictionary. It will still generate 720 CSV, but it is much faster since it avoids 720 export calls and their overhead.
source share