Publié le :
Macro EXTERNE

Macro dirfp2sas : Listing de fichiers Windows vers table SAS

Ce code est également disponible en : Deutsch English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Cette macro utilise une commande système via un 'filename pipe' pour exécuter une commande shell (spécifique à Windows 'dir'/'for') afin de lister les fichiers correspondant au motif fourni. Le résultat est stocké dans une table SAS© contenant le chemin complet et le nom de fichier en minuscules. Note : Ce code contient des commandes spécifiques à Windows et nécessitera une adaptation pour fonctionner sur un environnement SAS© Viya standard (Linux).
Analyse des données

Type : EXTERNE


Les données proviennent d'une commande système (Pipe) listant les fichiers du répertoire spécifié.

1 Bloc de code
MACRO
Explication :
Définition de la macro, gestion des options de log et configuration du 'filename pipe' pour exécuter la commande système Windows de listing de fichiers.
Copié !
1%macro dirfp2sas(filepattern,dsout);
2 
3 %local savopts;
4 %let savopts=%sysfunc(getoption(NOTES));
5 
6 %IF not %LENGTH(&dsout) %THEN %let dsout=_dirfp2sas;
7 
8 options nonotes;
9 
10 filename _dirfp pipe
11 "echo off & for %nrstr(%f) in (""&filepattern"") do echo %nrstr(%f)";
2 Bloc de code
DATA STEP Data
Explication :
Lecture du flux de sortie de la commande système et création de la table de sortie avec le chemin complet et le nom de fichier extrait.
Copié !
1 DATA &dsout;
2 LENGTH filename $ 300 lcfname $ 200;
3 INFILE _dirfp;
4 INPUT;
5 filename=trim(_infile_);
6 lcfname=lowcase(scan(filename,-1,"\"));
7 RUN;
3 Bloc de code
CLEANUP
Explication :
Nettoyage du filename et restauration des options SAS initiales.
Copié !
1 filename _dirfp CLEAR;
2 
3 options &savopts;
4 
5%mend dirfp2sas;
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 : Public domain software. Roland Rashleigh-Berry.


Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« La macro %dirfp2sas illustre parfaitement l'utilisation des pipes (canaux) pour étendre les capacités de SAS au-delà de la manipulation de tables. En exploitant l'instruction FILENAME PIPE, vous transformez la sortie d'une commande shell Windows (DIR ou FOR) en un flux de données lisible par une étape DATA. C'est une méthode d'une efficacité redoutable pour automatiser l'inventaire de répertoires volumineux ou pour orchestrer l'importation dynamique de fichiers dont les noms varient. L'astuce réside ici dans le nettoyage immédiat via lowcase et scan, permettant de normaliser les noms de fichiers pour des comparaisons ultérieures robustes. »