Alle Data-Sets in einer Bibliothek ansprechen
Verfasst von Mario am 8 Februar, 2008 - 07:47
Hallo,
zurzeit hänge ich an einem kleinen Problem, das sich bestimmt einfach beheben lässt. Leider wurde ich aber weder durch die Google-Methode noch durch die SAS-Dokumentation wesentlich schlauer.
Folgender Code wird ausgeführt (symbolische Namen):
data work.eigentum;
set work.haus work.auto work.yacht;
run;
set work.haus work.auto work.yacht;
run;
In der Praxis werden über 40 Dateien (steigend) in der SET-Anweisung angegeben. Es ist kein bestimmtes Muster wie eine laufende Nummer im Dateinamen vorhanden. Gibt es nicht dennoch eine einfacherere und schöne Möglichkeit, alle Data-Sets in einer Bibliothek anzusprechen?
Ich bin über jede Hilfe dankbar.
»
- Anmelden oder Registrieren um Kommentare zu schreiben

SASHelp.Vtable
Hallo Mario,
es gibt in SAS sogenannte dynamische Views. Diese stehen in der Bibliothek SASHelp. Einer dieser Views heisst VTable und enthält Informationen über alle Tabellen in den zur Zeit angelegten Bibliotheken. Mit einem Filter auf den Namen der Bibliothek lassen sich dann die passenden Tabellennamen herausfinden.
In PROC SQL kannn man die Views auch verwenden. Den View SASSHelp.VTable kann man auch als Dictionary.Tables ansprechen. Auch die anderen Views können über Dictionary angesprochen werden.
Ich hoffe das hilft weiter.
Gruß
Klaus Landwich
Alle Data-Sets in einer Bibliothek ansprechen
Vielen Dank, der Hinweis hat mir auf jeden Fall weitergeholfen. Mit der Bibliothek SASHelp hatte ich mich bislang nie beschäftigt.
Meine Lösung (ohne Fehlerabfrage) sieht nun wie folgt aus:
filename2 = catt(libname,'.',memname);
run;
data work.tables (keep = filename); set work.tables;
retain filename;
if _n_ = 1 then do;
filename = filename2;
end;
else do;
filename = catx(' ',filename,filename2);
end;
call symput ("filelist",filename);
run;
data work.eigentum;
set &filelist;
run;
oder auch so
select catt(libname,'.',memname)
into :filelist
separated by ' '
from sashelp.vtable
where libname='MS';
quit;
data work.eigentum;
set &filelist;
run;
Kürzer geht es nicht mehr
Super, vielen Dank. Damit erspare ich mir den Umweg über eine temporäre Datei. Ich merke, in SAS gibt es für mich noch sehr sehr viel zu erkunden.