Publicado el :
Administración CREATION_INTERNE

Macro _DELETE: Eliminación física de archivos SAS

Este código también está disponible en: Français Deutsch English Español
En espera de validación
Attention : Este código requiere privilegios de administrador.
Esta macro fue desarrollada para sortear las limitaciones de PROC DELETE o SCL FDELETE en ciertas versiones o configuraciones. Identifica las rutas físicas de los archivos asociados a una tabla o un catálogo SAS© (basándose en macros auxiliares no proporcionadas aquí como %_suffix, %_dir, %_unwind) y ejecuta un comando del sistema ('rm -f' para Unix o 'del' para Windows) para eliminarlos permanentemente. Incluye una gestión de derechos de autor.
Análisis de datos

Type : CREATION_INTERNE


El script contiene una sección de validación (comentada) que genera una tabla de prueba 'pwd._test_' con un índice para verificar el funcionamiento de la eliminación.

1 Bloque de código
MACRO
Explicación :
Definición de la macro principal. Construye la lista de extensiones de archivos a eliminar (a través de %_suffix y %_catext), itera sobre estas extensiones para construir la ruta completa del archivo físico, verifica su existencia y lanza un comando del sistema (comando x) para eliminarlo.
¡Copiado!
1%macro _delete(arg1, cat=&arg1, DATA=&cat);
2 
3%local i suffix file;
4 
5%let suffix=%_suffix %_catext;
6 
7%DO i=1 %to %_count(&suffix);
8 %let file=%_dir(%sysfunc(pathname(%_lib(&DATA))))%_data(&DATA).%scan(&suffix, &i, %str( ));
9
10 %IF %_exist(&file) %THEN x "%_unwind(rm -f, del) &file";;
11%END;
12 
13%mend _delete;
2 Bloque de código
DATA STEP Data
Explicación :
Código de validación (comentado): Inicializa una librería local y crea un conjunto de datos de prueba que contiene un índice, utilizado para validar que la macro elimina correctamente el conjunto de datos Y su archivo de índice asociado.
¡Copiado!
1/*
2libname pwd '.';
3 
4data pwd._test_(index=(x));
5 x=1;
6 output;
7run;
8*/
3 Bloque de código
MACRO CALL
Explicación :
Código de validación (comentado): Llama a la macro _delete en el archivo de prueba y un catálogo, luego verifica el contenido del directorio a través de PROC CONTENTS para confirmar la eliminación.
¡Copiado!
1/*
2%_delete(pwd._test_);
3%_delete(pwd.imlstor);
4 
5proc contents data=pwd._all_;
6run;
7*/
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.
Información de copyright : Copyright (c) 2001-2008 Rodney Sparapani. GNU General Public License.