Das Skript verwendet keine externen Datenquellen oder traditionellen SAS-Datasets. Es interagiert direkt mit dem SAS-Metadatendienst. Die benötigten Informationen werden entweder als Makroparameter (`target`) bereitgestellt oder dynamisch (XML-Anfrage) innerhalb des Skripts selbst generiert. Es sind keine Daten von SASHELP oder anderen nicht verwalteten Quellen erforderlich.
1 Codeblock
Macro Définition
Erklärung : Dieser Block definiert das SAS-Makro `%mm_deletedocument`. Es ist dafür vorgesehen, mit einem `target`-Parameter aufgerufen zu werden, der den vollständigen Pfad des zu löschenden Metadaten-Dokumentobjekts angibt.
Erklärung : Dieser `DATA STEP _null_` initialisiert lokale Variablen (`type`, `uri`) und verwendet die Funktion `metadata_pathobj`, um das Metadaten-Repository abzufragen, um die Existenz des durch `&target` angegebenen Objekts zu überprüfen und dessen Typ ('Note') und URI zu erhalten. Die abgerufenen Informationen werden in den Makrovariablen `type` und `stpuri` gespeichert. Wenn das Objekt kein 'Dokument' ist oder nicht gefunden wird, wird eine Warnmeldung ausgegeben und das Makro beendet.
Kopiert!
/**
* Check document exist
*/
%local type;
data _null_;
length type uri $256;
rc=metadata_pathobj("","&target",'Note',type,uri);
call symputx('type',type,'l');
call symputx('stpuri',uri,'l');
run;
%if &type ne Document %then %do;
%put %str(WARN)ING: No Document found at ⌖
%return;
%end;
Erklärung : Dieser Block bereitet temporäre Dateien für die Eingabe (`__in`) und Ausgabe (`__out`) der `proc metadata`-Prozedur vor. Ein `DATA STEP _null_` wird verwendet, um ein XML-Dokument zur Metadatenlöschung zu generieren, das den URI des zu löschenden Dokuments (`&stpuri`) enthält, und es in die Datei `__in` zu schreiben. Die `proc metadata` wird dann mit diesen Dateien aufgerufen, um die Löschungsanfrage an den SAS-Metadatenserver zu übermitteln.
Kopiert!
filename __in temp lrecl=10000;
filename __out temp lrecl=10000;
data _null_ ;
file __in ;
put "<DeleteMetadata><Metadata><Document Id='&stpuri'/>";
put "</Metadata><NS>SAS</NS><Flags>268436480</Flags><Options/>";
put "</DeleteMetadata>";
run ;
proc metadata in=__in out=__out verbose;run;
1
filename __in temp lrecl=10000;
2
filename __out temp lrecl=10000;
3
DATA _null_ ;
4
file __in ;
5
put "<DeleteMetadata><Metadata><Document Id='&stpuri'/>";
6
put "</Metadata><NS>SAS</NS><Flags>268436480</Flags><Options/>";
7
put "</DeleteMetadata>";
8
RUN ;
9
PROC METADATA in=__in out=__out verbose;RUN;
4 Codeblock
DATA STEP
Erklärung : Dieser `DATA STEP _null_` liest und zeigt den Inhalt der Datei `__out` an, die die Antwort des Metadatenservers nach dem Löschvorgang enthält. Dies ermöglicht die Visualisierung des Operationsstatus. Anschließend werden die Definitionen der Filerefs `__in` und `__out` gelöscht.
Kopiert!
/* list the result */
data _null_;infile __out; input; list; run;
filename __in clear;
filename __out clear;
1
/* list the result */
2
DATA _null_;INFILE __out; INPUT; list; RUN;
3
4
filename __in clear;
5
filename __out clear;
5 Codeblock
DATA STEP
Erklärung : Dieser Block führt eine abschließende Überprüfung durch, um sicherzustellen, dass das Dokument erfolgreich gelöscht wurde. Die Funktion `metadata_pathobj` wird erneut aufgerufen, um die Existenz des Objekts unter `&target` zu überprüfen. Wenn das Dokument immer noch vorhanden ist (`&isgone = Document`), wird eine Fehlermeldung angezeigt, der Systemrückgabecode (`syscc`) auf 4 gesetzt, und das Makro beendet, was darauf hinweist, dass das Löschen fehlgeschlagen ist.
Kopiert!
/**
* Check deletion
*/
%local isgone;
data _null_;
length type uri $256;
call missing (of _all_);
rc=metadata_pathobj("","&target",'Note',type,uri);
call symputx('isgone',type,'l');
run;
%if &isgone = Document %then %do;
%put %str(ERR)OR: Document not deleted from ⌖
%let syscc=4;
%return;
%end;
%put %str(ERR)OR: Document not deleted from ⌖
13
%let syscc=4;
14
%return;
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.