Publicado el :
Administración CREATION_INTERNE

Eliminación de un documento de metadatos

Este código también está disponible en: Deutsch English Français
En espera de validación
Attention : Este código requiere privilegios de administrador.
La macro `%mm_deletedocument` está diseñada para gestionar la eliminación de objetos 'Documento' en el sistema de metadatos SAS©. Toma como entrada un parámetro `target` que especifica la ruta completa del documento a eliminar. Antes de cualquier intento de eliminación, procede a una verificación rigurosa de la existencia y el tipo del objeto a través de la función `metadata_pathobj`. Si el objeto no se encuentra o no se reconoce como un 'Documento', la macro emite una advertencia y se detiene prematuramente para evitar operaciones inútiles o erróneas. En caso de validación positiva, la macro construye dinámicamente una solicitud XML (`<DeleteMetadata>`) dirigida al URI del documento a eliminar, y la envía al servidor de metadatos SAS© utilizando `proc metadata`. Después de la ejecución de este procedimiento, se realiza una segunda verificación para confirmar que el documento ha sido eliminado del repositorio. En caso de que la eliminación falle (el documento sigue presente), se registra un mensaje de error y el código de retorno del sistema (`syscc`) se establece en 4, lo que indica una operación no concluyente.
Análisis de datos

Type : CREATION_INTERNE


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.
¡Copiado!
1%macro mm_deletedocument(
2target=
3)/*/STORE
4SOURCE*/;
5 
2 Bloque de código
DATA STEP
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!
1/**
2 * Check document exist
3 */
4%local type;
5DATA _null_;
6 LENGTH type uri $256;
7 rc=metadata_pathobj("","&target",'Note',type,uri);
8 call symputx('type',type,'l');
9 call symputx('stpuri',uri,'l');
10RUN;
11%IF &type ne Document %THEN %DO;
12 %put %str(WARN)ING: No Document found at ⌖
13 %return;
14%END;
3 Bloque de código
DATA STEP / PROC METADATA Data
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!
1filename __in temp lrecl=10000;
2filename __out temp lrecl=10000;
3DATA _null_ ;
4 file __in ;
5 put "<DeleteMetadata><Metadata><Document Id='&stpuri'/>";
6 put "</Metadata><NS>SAS</NS><Flags>268436480</Flags><Options/>";
7 put "</DeleteMetadata>";
8RUN ;
9PROC 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!
1/* list the result */
2DATA _null_;INFILE __out; INPUT; list; RUN;
3 
4filename __in clear;
5filename __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!
1/**
2 * Check deletion
3 */
4%local isgone;
5DATA _null_;
6 LENGTH type uri $256;
7 call missing (of _all_);
8 rc=metadata_pathobj("","&target",'Note',type,uri);
9 call symputx('isgone',type,'l');
10RUN;
11%IF &isgone = Document %THEN %DO;
12 %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.