Veröffentlicht am :
Makro EXTERNE

Dienstprogramm-Makro zum Leeren einer SAS-Tabelle

Dieser Code ist auch verfügbar auf: English Español Français
Dieses Makro mit dem Namen DI_UTIL_TRUNCATE_TABLE ermöglicht es, eine Tabelle von all ihren Daten zu leeren, ohne sie zu löschen. Es verwendet eine zweistufige Methode: Zuerst exportiert es die Tabellenstruktur (aber keine Daten dank der Option OBS=0) über PROC CPORT in eine temporäre Transportdatei. Anschließend importiert es diese Struktur mit PROC CIMPORT aus der temporären Datei erneut, wodurch die vorhandene Tabelle durch eine leere Tabelle überschrieben wird. Indizes und Bedingungen bleiben erhalten. Das Makro speichert und stellt außerdem die Systemoptionen OBS und NOTES wieder her, um die Benutzerumgebung nicht zu beeinträchtigen.
Datenanalyse

Type : EXTERNE


Das Makro arbeitet mit einer vorhandenen SAS-Tabelle, deren Name als Parameter übergeben wird. Es werden keine Daten aus SASHELP erstellt oder gelesen.

1 Codeblock
MACRO
Erklärung :
Dieser Block definiert das Makro `DI_UTIL_TRUNCATE_TABLE`. Es nimmt einen Tabellennamen als Parameter entgegen. Die Ausführung beginnt mit dem Speichern der globalen Optionen `obs` und `notes`. Anschließend setzt es `obs=0`, um keine Beobachtungen zu lesen, und verwendet `PROC CPORT`, um nur die Struktur der Eingabetabelle in eine temporäre Datei zu exportieren. Wenn dieser Schritt erfolgreich ist (`syserr=0`), wird `PROC CIMPORT` aufgerufen, um die Struktur aus der temporären Datei wieder in dieselbe Tabelle zu importieren, wodurch diese geleert wird. Schließlich werden die ursprünglichen Optionen `obs` und `notes` wiederhergestellt. Ein Label `EXIT` wird verwendet, um sicherzustellen, dass die Optionen auch im Fehlerfall wiederhergestellt werden.
Kopiert!
1%macro DI_UTIL_TRUNCATE_TABLE( TABLE ) ;
2 
3 *------save caller environment------;
4 %local callerobs;
5 %let callerobs = %sysfunc(getoption(obs));
6 %local callernotes;
7 %let callernotes = %sysfunc(getoption(notes));
8 
9 
10 *------cport zero obs of the table silently to capture table definition------;
11 options obs=0 nonotes;
12 filename tranfile temp;
13 PROC CPORT file=tranfile DATA=&TABLE; RUN;
14 %IF &syserr ne 0 %THEN %goto EXIT;
15 
16 
17 *------cimport the empty table definition------;
18 PROC CIMPORT INFILE=tranfile DATA=&TABLE extendsn=no; RUN;
19 %IF &syserr ne 0 %THEN %goto EXIT;
20 options obs=&callerobs &callernotes;
21 %put NOTE: %qupcase(&TABLE) has been truncated.;
22 
23 
24%EXIT:
25 options obs=&callerobs &callernotes;
26 
27%mend DI_UTIL_TRUNCATE_TABLE;
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 : Copyright (C) 2016 SAS Institute, Inc. All rights reserved.