Publié le :
Administration CREATION_INTERNE

Macro _DELETE : Suppression physique de fichiers SAS

Ce code est également disponible en : Français Deutsch English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Cette macro a été développée pour contourner les limitations de PROC DELETE ou SCL FDELETE sur certaines versions ou configurations. Elle identifie les chemins physiques des fichiers associés à une table ou un catalogue SAS© (en s'appuyant sur des macros auxiliaires non fournies ici comme %_suffix, %_dir, %_unwind) et exécute une commande système ('rm -f' pour Unix ou 'del' pour Windows) pour les supprimer définitivement. Elle inclut une gestion des droits d'auteur.
Analyse des données

Type : CREATION_INTERNE


Le script contient une section de validation (commentée) qui génère une table de test 'pwd._test_' avec un index pour vérifier le fonctionnement de la suppression.

1 Bloc de code
MACRO
Explication :
Définition de la macro principale. Elle construit la liste des extensions de fichiers à supprimer (via %_suffix et %_catext), boucle sur ces extensions pour construire le chemin complet du fichier physique, vérifie son existence, et lance une commande système (x command) pour le supprimer.
Copié !
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 Bloc de code
DATA STEP Data
Explication :
Code de validation (en commentaire) : Initialise une librairie locale et crée un dataset de test contenant un index, utilisé pour valider que la macro supprime bien le dataset ET son fichier d'index associé.
Copié !
1/*
2libname pwd '.';
3 
4data pwd._test_(index=(x));
5 x=1;
6 output;
7run;
8*/
3 Bloc de code
MACRO CALL
Explication :
Code de validation (en commentaire) : Appelle la macro _delete sur le fichier de test et un catalogue, puis vérifie le contenu du répertoire via PROC CONTENTS pour confirmer la suppression.
Copié !
1/*
2%_delete(pwd._test_);
3%_delete(pwd.imlstor);
4 
5proc contents data=pwd._all_;
6run;
7*/
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Copyright (c) 2001-2008 Rodney Sparapani. GNU General Public License.


Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« La macro %_delete est un utilitaire de bas niveau conçu pour les administrateurs et développeurs qui nécessitent un contrôle total sur le système de fichiers, au-delà des capacités de la PROC DELETE. Son intérêt principal réside dans sa capacité à cibler directement les fichiers sur le disque (extensions .sas7bdat, .sas7bndx, etc.) en résolvant leur chemin physique via la fonction pathname. En utilisant l'instruction X couplée à une logique de détection d'OS (%_unwind), elle permet de nettoyer radicalement des bibliothèques, incluant les fichiers d'index ou les catalogues souvent verrouillés. »