La source de données est le résultat d'une commande système. Le script crée un fichier temporaire ('c:\tmp.tmp' ou '&localtemp\tmp.tmp') qui contient le chemin du répertoire, puis lit ce fichier. Aucune donnée externe préexistante n'est nécessaire.
1 Bloc de code
MACRO Data
Explication : Ce bloc définit la macro `%AHGdosdir`. Elle commence par activer l'option `noxwait` pour ne pas attendre la fin des commandes système. Elle exécute deux commandes système via l'instruction `X` : la première pour changer de répertoire (`cd`) et la seconde pour écrire le chemin du répertoire courant dans un fichier temporaire. Ensuite, une étape `DATA _NULL_` est utilisée pour lire le contenu de ce fichier temporaire. La fonction `tranwrd` est conditionnellement utilisée pour remplacer les anti-slashes par des doubles anti-slashes. Enfin, `call symput` assigne le chemin lu à la variable macro globale `dosdir`.
Copié !
%macro AHGdosdir(name,perldir=0,len=300);
option noxwait;
x "cd \"&name\" ";
x "command & cd >&localtemp\tmp.tmp ";
%global dosdir;
data _null_;
length dir $&len;
infile 'c:\tmp.tmp';
input dir;
if &perldir then dir=tranwrd(dir,'\','\\');
call symput('dosdir',dir);
run;
%mend;
1
%macro AHGdosdir(name,perldir=0,len=300);
2
3
option noxwait;
4
x "cd \"&name\" ";
5
x "command & cd >&localtemp\tmp.tmp ";
6
%global dosdir;
7
8
DATA _null_;
9
LENGTH dir $&len;
10
INFILE'c:\tmp.tmp';
11
INPUT dir;
12
IF &perldir THEN dir=tranwrd(dir,'\','\\');
13
call symput('dosdir',dir);
14
RUN;
15
16
17
%mend;
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.
« Soyez prudent avec l'utilisation des chemins codés en dur comme c:\tmp.tmp. Dans les environnements modernes et sécurisés (comme SAS Viya sur Linux), l'accès direct à la racine C: peut être restreint. Privilégiez l'utilisation de la fonction SAS %sysfunc(getoption(work)) pour placer vos fichiers temporaires dans le répertoire WORK, ce qui garantit que votre macro fonctionnera partout, quel que soit le serveur »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.