Veröffentlicht am :

Konvertierung von Bibliotheksdateien in CARDS-Dateien

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Dieses Makro durchläuft alle Tabellen einer bestimmten Bibliothek (über den Parameter 'lib'). Für jede Tabelle verwendet es das Makro %mp_ds2cards, um die Daten in SAS©-Code (DATA-Schritt mit Cards) zu konvertieren. Das Ergebnis wird in ein definiertes Ausgabeverzeichnis geschrieben. Der Benutzer kann wählen, ob der gesamte Code in einer einzigen Datei ('outfile') konsolidiert oder eine separate '.sas©'-Datei für jede Tabelle erstellt werden soll. Das Makro verwaltet auch die Erstellung des Zielverzeichnisses bei Bedarf.
Datenanalyse

Type : MIXTE


Das Skript fragt die Systemansicht DICTIONARY.TABLES ab, um den Inhalt der Bibliothek aufzulisten. Anschließend liest es die Daten der als Parameter ('lib') übergebenen Bibliothek, um sie zu exportieren.

1 Codeblock
PROC SQL
Erklärung :
Dieser Schritt ruft die Liste der Tabellennamen (Mitglieder) ab, die in der durch den Parameter &lib angegebenen Bibliothek vorhanden sind, indem das SAS-Wörterbuch abgefragt wird. Die Liste wird in der Makrovariablen &memlist gespeichert.
Kopiert!
1PROC SQL noprint;
2select distinct lowcase(memname)
3 into: memlist
4 separated BY ' '
5 from dictionary.tables
6 where upcase(LIBNAME)="%upcase(&lib)";
2 Codeblock
Macro Call
Erklärung :
Bereinigt den Pfad des Ausgabeverzeichnisses (Entfernung von abschließenden Schrägstrichen) und stellt sicher, dass das Verzeichnis existiert, indem das Dienstprogramm-Makro %mf_mkdir aufgerufen wird.
Kopiert!
1%let outloc=%mf_trimstr(&outloc,/);
2%let outloc=%mf_trimstr(&outloc,\);
3 
4/* create the output directory */
5%mf_mkdir(&outloc)
3 Codeblock
Macro Loop Data
Erklärung :
Durchläuft jede in der Bibliothek gefundene Tabelle. Ruft das Makro %mp_ds2cards auf, um die entsprechende CARDS-Datei zu generieren. Verwaltet die Logik zum Hinzufügen zu einer einzigen Datei (append=YES) oder zum Erstellen separater Dateien, abhängig vom Wert des Parameters &outfile.
Kopiert!
1%DO x=1 %to %sysfunc(countw(&memlist));
2 %let ds=%scan(&memlist,&x);
3 %mp_ds2cards(base_ds=&lib..&ds
4 ,maxobs=&maxobs
5 ,random_sample=&random_sample
6 %IF "&outfile" ne "0" %THEN %DO;
7 ,append=YES
8 ,cards_file="&outloc/&outfile"
9 %END;
10 %ELSE %DO;
11 ,append=NO
12 ,cards_file="&outloc/&ds..sas"
13 %END;
14 )
15%END;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Allan Bowe