Publié le :
Utilitaire CREATION_INTERNE

Vérification de l'existence d'un dossier sur SAS Drive

Ce code est également disponible en : Deutsch English Español
Attention : Ce code nécessite des droits administrateur.
La macro `mfv_existfolder` prend un chemin de dossier en paramètre (`path`). Elle utilise la fonction `filename` avec le moteur `filesrvc` pour tester la présence du dossier sur SAS© Drive. Le comportement standard de la fonction `filename` est de modifier la valeur de `&syscc` en cas d'échec (dossier non trouvé). Pour contrôler ce comportement, la macro inclut une réinitialisation explicite de `&syscc` à 0 si le dossier n'est pas trouvé. Des appels à la macro `mf_abort` sont présents au début et à la fin pour gérer les conditions d'erreur et assurer une sortie propre si `&syscc` indique un problème avant ou après l'exécution du corps principal de la macro. L'utilisation d'une référence de fichier unique (`%mf_getuniquefileref()`) garantit qu'il n'y a pas de conflit avec d'autres références de fichier. L'interaction avec SAS© Drive et le moteur `filesrvc` peut impliquer des opérations nécessitant des privilèges administratifs, d'où la classification 'admin: 1'.
Analyse des données

Type : CREATION_INTERNE


La macro ne traite pas de données à proprement parler, mais interagit avec le système de fichiers de SAS Drive (métadonnées d'existence de dossier). Aucune donnée externe n'est lue ou créée au sein de la macro elle-même pour traitement analytique.

1 Bloc de code
MACRO (mf_abort)
Explication :
Ce bloc vérifie la valeur de la variable système `&syscc`. Si `&syscc` n'est pas zéro (indiquant une erreur précédente), la macro `mf_abort` est appelée pour arrêter l'exécution et afficher un message d'erreur. Cela garantit que la macro `mfv_existfolder` ne s'exécute pas si l'environnement est déjà dans un état d'erreur.
Copié !
1%mf_abort(
2 iftrue=(&syscc ne 0),
3 msg=Cannot enter mfv_existfolder.sas with syscc=&syscc
4 )
2 Bloc de code
MACRO
Explication :
Déclare les variables macro locales `fref`, `rc`, et `var`. La variable `fref` est ensuite assignée une référence de fichier unique via la macro `mf_getuniquefileref` pour éviter les conflits et assurer l'unicité de la référence de fichier temporaire.
Copié !
1%local fref rc var;
2%let fref=%mf_getuniquefileref();
3 
3 Bloc de code
MACRO
Explication :
Ce bloc est le cœur de la macro. Il tente d'assigner une référence de fichier (`fref`) à un chemin de dossier (`&path`) sur SAS Drive en utilisant le moteur `filesrvc`. La fonction `filename` retourne 0 si l'assignation réussit (ce qui indique que le dossier existe). Si le dossier existe, la macro retourne la valeur '1'. Si le dossier n'existe pas, la fonction `filename` met `&syscc` à une valeur non nulle; la macro réinitialise alors `&syscc` à 0 dans le bloc `%else` pour éviter que cet échec n'affecte les opérations futures. La variable `var` et la référence de fichier sont nettoyées après usage.
Copié !
1%IF %sysfunc(filename(fref,,filesrvc,folderPath="&path"))=0 %THEN %DO;
2 1
3 %let var=_FILESRVC_&fref._URI;
4 %let rc=%sysfunc(filename(fref));
5 %symdel &var;
6 %END;
7 %ELSE %DO;
8 0
9 %let syscc=0;
10 %END;
4 Bloc de code
MACRO (mf_abort)
Explication :
Ce bloc vérifie à nouveau la valeur de `&syscc` avant de quitter la macro. Si `&syscc` est non nul, la macro `mf_abort` est appelée pour signaler une erreur, indiquant un problème survenu pendant l'exécution du corps de la macro `mfv_existfolder`.
Copié !
1%mf_abort(
2 iftrue=(&syscc ne 0),
3 msg=Cannot leave mfv_existfolder.sas with syscc=&syscc
4 )
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 : Allan Bowe