Publié le :

Macro de suppression de fichier externe

Ce code est également disponible en : Deutsch English Español
Attention : Ce code nécessite des droits administrateur.
Cette macro, nommée `_delFile`, est conçue pour supprimer un fichier externe dont le chemin complet est fourni en paramètre (`i_file`). Elle utilise les fonctions système SAS© `filename` pour associer un fileref temporaire au fichier, puis `fdelete` pour effectuer la suppression. Le code de retour de l'opération est renvoyé par la macro. Enfin, le fileref temporaire est libéré.
Analyse des données

Type : EXTERNE


Le script interagit avec un fichier externe spécifié par un paramètre (`i_file`), en effectuant une opération de suppression directement sur le système de fichiers de l'OS. Il ne consomme ni ne produit de jeux de données SAS traditionnels.

1 Bloc de code
MACRO
Explication :
Ce bloc définit la macro `_delFile` qui prend `i_file` (le chemin du fichier à supprimer) comme paramètre.
1. `%LOCAL rc filrf;`: Déclare les variables macro `rc` (code de retour) et `filrf` (fileref temporaire) comme locales pour éviter les conflits.
2. `%LET filrf=_tmpf;`: Assigne le nom de fileref temporaire `_tmpf` à la variable `filrf`.
3. `%LET rc=%sysfunc(filename(filrf,&i_file));`: Associe le fileref `_tmpf` au chemin du fichier fourni par `&i_file`. Le code de retour de cette opération est stocké dans `rc`.
4. `%LET rc=%sysfunc(fdelete(_tmpf));`: Supprime le fichier associé au fileref `_tmpf`. Le code de retour de la suppression est mis à jour dans `rc`.
5. `&rc`: Cette ligne émet la valeur de `rc`, qui représente le statut de l'opération de suppression.
6. `%LET rc=%sysfunc(filename(filrf));`: Libère l'association du fileref `_tmpf`, une bonne pratique pour nettoyer les ressources.
Copié !
1%MACRO _delFile(i_file);
2 
3 %LOCAL rc filrf;
4 %LET filrf=_tmpf;
5 %LET rc=%sysfunc(filename(filrf,&i_file));
6 %LET rc=%sysfunc(fdelete(_tmpf));
7 &rc
8 %LET rc=%sysfunc(filename(filrf));
9%MEND _delFile;
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 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de. Ce fichier fait partie de SASUnit, le framework de test unitaire pour les programmes SAS(R). Pour les informations de copyright et les conditions d'utilisation sous la GNU Lesser General Public License, voir le fichier README.md inclus ou https://github.com/HMS-Analytical-Software/SASUnit/wiki/readme/.


Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« La macro _delFile illustre une méthode propre et robuste pour gérer la suppression de fichiers directement depuis le langage macro, sans avoir recours à des commandes système dépendantes de l'OS (comme rm ou del). En s'appuyant sur les fonctions FILENAME et FDELETE via le processeur de macros, elle offre une portabilité totale entre Windows et Unix, tout en permettant un contrôle fin sur le succès de l'opération.

Recommandations et points de vigilance
L'importance du code retour : L'une des forces de cette macro est qu'elle retourne la valeur de la variable &rc générée par fdelete. Une valeur de 0 confirme la suppression, tandis qu'une valeur différente indique souvent un fichier verrouillé ou des droits d'accès insuffisants. Pour un usage industriel, il est conseillé de tester ce retour (ex: %if %_delFile(...) = 0 %then...) afin de conditionner la suite de votre traitement.

Gestion du Fileref : Le script utilise un fileref temporaire nommé _tmpf. C'est une bonne pratique, mais attention aux collisions si vous exécutez plusieurs processus en parallèle. Une amélioration d'expert consisterait à utiliser la fonction DUMMY ou un nom généré dynamiquement pour garantir l'unicité du fileref durant l'exécution.

Sécurité des chemins : Assurez-vous que le paramètre &i_file est passé entre guillemets si le chemin contient des espaces. De plus, n'oubliez pas que fdelete ne peut supprimer un fichier que si celui-ci n'est pas déjà ouvert par une session SAS ou une autre application. »