Publié le :
Utilitaire CREATION_INTERNE

Vérification de l'Existence d'un Fichier sur SAS Drive

Ce code est également disponible en : Deutsch English Español
La macro `%mfv_existfile` prend un paramètre `filepath` (le chemin complet du fichier sur SAS© Drive, ex: /Public/myfile.txt). Elle utilise `%mf_getuniquefileref()` pour générer une fileref temporaire. Le nom et le chemin du fichier sont extraits de `filepath`. Une tentative est faite pour assigner la fileref au fichier via la fonction `filename()` avec l'engine 'filesrvc'. Si l'assignation réussit (retourne 0), la fonction `fexist()` est utilisée pour confirmer l'existence réelle du fichier. En cas d'échec de `filename()`, la macro retourne 0 et s'assure que la macro-variable système `&syscc` est réinitialisée à 0 pour éviter de masquer d'éventuels problèmes ultérieurs. Un contrôle initial de `&syscc` est effectué via `%mf_abort` pour s'assurer que la macro n'est pas appelée dans un état d'erreur.
Analyse des données

Type : CREATION_INTERNE


Le script n'utilise ni ne crée de données au sens de jeux de données SAS traditionnels. Son objectif est d'interagir avec les métadonnées du système de fichiers de SAS Drive pour vérifier l'existence d'un objet (fichier), dont le chemin est fourni en paramètre.

1 Bloc de code
Appel Macro (%mf_abort)
Explication :
Ce bloc appelle la macro `%mf_abort` pour vérifier si la macro-variable système `&syscc` (code de retour d'erreur) est non nulle. Si c'est le cas, cela indique une erreur précédente et la macro s'arrête, évitant ainsi d'exécuter le code dans un état inattendu.
Copié !
1%mf_abort(
2 iftrue=(&syscc ne 0),
3 msg=Cannot enter mfv_existfile.sas with syscc=&syscc
4 )
2 Bloc de code
Manipulation de Variables Macro
Explication :
Ce bloc déclare des variables macro locales (`fref`, `rc`, `path`, `name`). Il initialise `fref` avec une référence de fichier unique générée par `%mf_getuniquefileref()`. Les fonctions macro `%scan` et `%substr` sont utilisées pour extraire le nom du fichier (`name`) et son chemin (`path`) du paramètre `filepath` fourni.
Copié !
1%local fref rc path name;
2 %let fref=%mf_getuniquefileref();
3 %let name=%scan(&filepath,-1,/);
4 %let path=%substr(&filepath,1,%LENGTH(&filepath)-%LENGTH(&name)-1);
3 Bloc de code
Fonctions SAS (filename, fexist)
Explication :
Ce bloc conditionnel tente d'assigner la fileref (`fref`) au fichier spécifié sur SAS Drive en utilisant la fonction `filename()` avec l'engine `filesrvc`. Si l'assignation réussit (retourne 0), `fexist(&fref)` est appelée pour vérifier l'existence du fichier et son résultat est renvoyé. Si l'assignation échoue, la macro retourne `0` et la macro-variable `&syscc` est explicitement réinitialisée à `0`.
Copié !
1%IF %sysfunc(filename(fref,,filesrvc,folderPath="&path" filename="&name"))=0
2 %THEN %DO;
3 %sysfunc(fexist(&fref))
4 %let rc=%sysfunc(filename(fref));
5 %END;
6 %ELSE %DO;
7 0
8 %let syscc=0;
9 %END;
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 : Auteur principal de la macro `mfv_existfile` : Allan Bowe. Cette macro fait appel ou référence à des composants ou macros distincts et copyrightés, notamment : '_version.sas' (Copyright (c) 2001-2006 Rodney Sparapani) et 'print_macro_parameters.sas' (Copyright © 2022, SAS Institute Inc.).