El script no utiliza fuentes de datos externas o conjuntos de datos SAS tradicionales. Interactúa directamente con el servicio de metadatos SAS. La información necesaria se proporciona como parámetro de macro (`target`) o se genera dinámicamente (XML de solicitud) dentro del propio script. No se requieren datos de SASHELP u otras fuentes no gestionadas.
1 Bloque de código
Macro Définition
Explicación : Este bloque define la macro SAS `%mm_deletedocument`. Está diseñada para ser llamada con un parámetro `target`, que es la ruta completa del objeto 'Documento' de metadatos a eliminar.
Explicación : Este `DATA STEP _null_` inicializa variables locales (`type`, `uri`) y utiliza la función `metadata_pathobj` para consultar el repositorio de metadatos con el fin de verificar la existencia del objeto especificado por `&target` y obtener su tipo ('Note') y URI. La información recuperada se almacena en las macro-variables `type` y `stpuri`. Si el objeto no es un 'Documento' o no se encuentra, se emite un mensaje de advertencia y la macro finaliza.
¡Copiado!
/**
* 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;
Explicación : Este bloque prepara archivos temporales para la entrada (`__in`) y la salida (`__out`) del procedimiento `proc metadata`. Se utiliza un `DATA STEP _null_` para generar un documento XML de eliminación de metadatos, incluyendo el URI del documento a eliminar (`&stpuri`), y escribirlo en el archivo `__in`. Luego se invoca `proc metadata` con estos archivos para enviar la solicitud de eliminación al servidor de metadatos SAS.
¡Copiado!
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 Bloque de código
DATA STEP
Explicación : Este `DATA STEP _null_` lee y muestra el contenido del archivo `__out`, que contiene la respuesta del servidor de metadatos después de la operación de eliminación. Esto permite visualizar el estado de la operación. Luego, se borran las definiciones de los filerefs `__in` y `__out`.
¡Copiado!
/* 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 Bloque de código
DATA STEP
Explicación : Este bloque realiza una verificación final para asegurarse de que el documento ha sido eliminado correctamente. La función `metadata_pathobj` se llama de nuevo para verificar la existencia del objeto en `&target`. Si el documento todavía está presente (`&isgone = Document`), se muestra un mensaje de error, el código de retorno del sistema (`syscc`) se establece en 4, y la macro finaliza, indicando que la eliminación ha fallado.
¡Copiado!
/**
* 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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.