Danke Tom, das hat sehr geholfen. Ich habe noch modifiziert, weil ich die Header ohne double quotes gebraucht habe. Ich habe die Header mit PROC EXPORT und obs=0 in eine separate csv-Datei geschrieben und die Daten mit dem ~ modifier geschrieben. Für das PUT-Statement habe ich die Variablen zusammengebastelt. Die beiden csv-Dateien habe ich dann mit %sysexec und dem Linux cat-Befehl aneinandergehängt proc sql;
create table metainfo as
select memname, name, type, varnum from sashelp.vcolumn
where upcase(libname)="SASHELP" and upcase(memname)="CLASS"
order by varnum
;
quit;
data outvars(keep=memname outvars);
set metainfo end=lastrec;
length outvars out $1024;
retain outvars;
by varnum;
if _n_=1 then do;
outvars="";
end;
if upcase(type)="CHAR" then out=compbl(cat(upcase(name)," ~ "));
else out=upcase(name);
outvars=catx(" ",outvars,out);
if lastrec;
call symput('outvars',outvars);
run;
%let path=<path>;
filename outhead "&path./header.csv" lrecl=1024;
filename out "&path./data.csv" lrecl=1024;
proc export data=sashelp.class(obs=0) file=outhead dbms=csv replace;
delimiter=",";
run;
data _null_;
file out dsd dlm="," ;
set sashelp.class;
put &outvars.;
run;
filename out clear;
filename outhead clear;
%sysexec cat &path./header.csv &path./data.csv > &path./class.csv;
... View more