SAS Daten per Remote SUBMITE vom Großrechner selektieren, DOWNLOAD zum PC und EXPORT in EXCEL
Immer wieder wurde es notwenig Daten auf dem Großrechner zu selektieren und diese anschließend der Fachabteilung zur Verfügung zu stellen. Da die Daten meist weiterverarbeitet wurden, bestand der Wunsch, sie in einem Microsoft gerechtem Vormat zu haben, in EXCEL. Anbei meine Lösung, die auch mit der Schwierigkeit der Umlaute zurecht kommt.
options comamid=TCP;
%let server=e003.esb.eur.deuba.com 5030;
options remote=server;
%*** Signon mit einer voreingestellen Userid (im Popupfenster noch aenderbar);
%*** und noch einzugebendem Passwort (erscheint leer);
signon user=APH090 password=_prompt_;
%*** Lege hier den Pfand und den Namen der Excelausgabedatei fest;
%let locDir = %str(C:\Temp);
%let excelfile=TestDatei;
%*** Remote Submit, dieses Statement wird nur auf dem HOST verarbeitet;
rsubmit;
Libname TestAlloc "&sysuid..testlib.sas" disp=shr;
%*** Translation Table EBCDIC ==> ASCII;
proc trantab table=ebcdic;
rep 074 138 /*Ä*/; rep 190 100 /*´*/; rep 253 177 /*Ù*/;
rep 224 174 /*Ö*/; rep 160 101 /*µ*/; rep 254 178 /*Ú*/;
rep 090 180 /*Ü*/; rep 182 102 /*¶*/; rep 251 179 /*Û*/;
rep 192 188 /*ä*/; rep 179 103 /*·*/; rep 173 181 /*�*/;
rep 106 236 /*ö*/; rep 157 104 /*¸*/; rep 174 182 /*Þ*/;
rep 208 252 /*ü*/; rep 218 105 /*¹*/; rep 068 184 /*à */;
rep 161 183 /*ß*/; rep 155 112 /*º*/; rep 069 185 /*á*/;
rep 079 090 /*!*/; rep 139 113 /*»*/; rep 066 186 /*â*/;
rep 181 124 /*@*/; rep 183 114 /*¼*/; rep 070 187 /*ã*/;
rep 099 173 /*[*/; rep 184 115 /*½*/; rep 071 106 /*å*/;
rep 236 224 /*\*/; rep 185 116 /*¾*/; rep 156 190 /*æ*/;
rep 252 189 /*]*/; rep 171 117 /*¿*/; rep 072 191 /*ç*/;
rep 067 192 /*{*/; rep 100 118 /*À*/; rep 084 202 /*è*/;
rep 187 079 /*|*/; rep 101 119 /*�*/; rep 081 203 /*é*/;
rep 220 208 /*}*/; rep 098 120 /*Â*/; rep 082 204 /*ê*/;
rep 089 161 /*~*/; rep 102 128 /*Ã*/; rep 083 205 /*ë*/;
rep 170 066 /*¡*/; rep 103 139 /*Å*/; rep 088 206 /*ì*/;
rep 176 067 /*¢*/; rep 158 140 /*Æ*/; rep 085 207 /*Ã*/;
rep 177 068 /*£*/; rep 104 141 /*Ç*/; rep 086 218 /*î*/;
rep 159 069 /*¤*/; rep 116 142 /*È*/; rep 087 219 /*ï*/;
rep 178 070 /*¥*/; rep 113 143 /*É*/; rep 140 220 /*ð*/;
rep 204 071 /*¦*/; rep 114 144 /*Ê*/; rep 073 221 /*ñ*/;
rep 124 072 /*§*/; rep 115 154 /*Ë*/; rep 205 222 /*ò*/;
rep 189 073 /*¨*/; rep 120 155 /*Ì*/; rep 206 223 /*ó*/;
rep 180 081 /*©*/; rep 117 156 /*�*/; rep 203 234 /*ô*/;
rep 154 082 /*ª*/; rep 118 157 /*Î*/; rep 207 235 /*õ*/;
rep 138 083 /*«*/; rep 119 158 /*�*/; rep 225 237 /*÷*/;
rep 186 084 /*¬*/; rep 172 159 /*�*/; rep 112 238 /*ø*/;
rep 202 085 /*-Â*/; rep 105 160 /*Ñ*/; rep 221 239 /*ù*/;
rep 175 086 /*®*/; rep 237 170 /*Ò*/; rep 222 250 /*ú*/;
rep 188 087 /*¯*/; rep 238 171 /*Ó*/; rep 219 251 /*û*/;
rep 144 088 /*°*/; rep 235 172 /*Ô*/; rep 141 253 /*ý*/;
rep 143 089 /*±*/; rep 239 074 /*Õ*/; rep 142 254 /*þ*/;
rep 234 098 /*²*/; rep 191 175 /*×*/; rep 223 255 /*ÿ*/;
rep 250 099 /*³*/; rep 128 176 /*Ø*/;
save table=e2a;
quit;
%*** Simple Datenselektionen;
data testdat1; set testalloc.testdat1; run;
data testdat2; set testalloc.testdat2; run;
data testdat3; set testalloc.testdat3; run;
%*** Simples Donload der selektierten Daten, vom HOST ==> PC;
proc download data=testdat1 out=testdat1; trantab name=e2a; run;
proc download data=testdat2 out=testdat2; trantab name=e2a; run;
proc download data=testdat3 out=testdat3; trantab name=e2a; run;
%*** Ende der Remote Submite;
endrsubmit;
%*** Ende der HOST Session;
signoff;
%*** Kleines Macro, was aus den SAS-Membern eine oder mehrere;
%*** Exceldateien erstellt. Wahlweise stehen die Member in einer;
%*** Exceldatei in unterschiedlichen Blättern oer in einzelnen ;
%*** Exceldateie. Der Blatname ist gleich dem SAS-Membername;
%macro ausgabe(dat, Exceltab=Sonderauswertung, Einzeln=No);
%if Einzeln = %str(Yes) %then %do;
proc export data=work.&dat. outfile="&locDir.\Excel\&dat..xls" dbms=excel2000 replace; run;
%end;
%else %do;
proc export data=work.&dat. outfile="&locDir.\Excel\&exceltab..xls" dbms=excel2000; sheet=&dat.; run;
%end;
%mend;
%*** Export nach Excel, hier in eine Datei mit drei Tabellen;
%ausgabe(Testdat1,Exceltab=&excelfile. );
%ausgabe(Testdat2,Exceltab=&excelfile. );
%ausgabe(Testdat3,Exceltab=&excelfile. );
