Publié le :
Macro EXTERNE

Récupérer la valeur d'une variable d'environnement

Attention : Ce code nécessite des droits administrateur.
Cette macro récupère la valeur d'une variable d'environnement spécifiée en paramètre. Elle adapte sa méthode en fonction du système d'exploitation détecté via la variable automatique `&sysscp`. Sous Windows, elle exécute `echo %envvar%` et sous Unix/Linux (ou similaire), elle exécute `echo $envvar`. Le résultat de la commande est lu via la macro `%qreadpipe` (supposée lire la sortie d'une commande système). La valeur retournée est macro-quotée pour une utilisation sécurisée dans d'autres macros. Si la variable d'environnement n'est pas trouvée, la macro retourne une chaîne de caractères vide sans générer d'avertissement dans le journal SAS©.
Analyse des données

Type : EXTERNE


La macro ne lit aucun jeu de données. Sa source d'information est externe à SAS : les variables d'environnement du système d'exploitation sur lequel SAS est exécuté.

1 Bloc de code
Macro
Explication :
Ce bloc définit la macro `%qgetenv` qui prend en entrée le nom d'une variable d'environnement. Elle déclare une variable macro locale `tempres`. Un test conditionnel sur la variable `&sysscp` exécute une commande différente pour Windows (`echo %variable%`) et pour Unix/Linux (`echo $variable`). La commande est passée à la macro `%qreadpipe` pour exécution et capture de la sortie. Pour Windows, un contrôle supplémentaire vérifie si la variable a été résolue, sinon une chaîne vide est retournée. Finalement, la macro retourne le contenu capturé.
Copié !
1%macro qgetenv(envvar);
2 %local tempres;
3 %IF "&sysscp" EQ "WIN" %THEN %DO;
4 %let tempres=%qreadpipe(echo %nrbquote(%str(%%)%superq(envvar)%str(%%)));
5 %*- IF it did not resolve THEN SET to null -;
6 %IF "%qsubstr(%superq(tempres),1,1)" EQ "%" %THEN %let tempres=;
7 %END;
8 %ELSE %let tempres=%qreadpipe(echo $&envvar);
9&tempres
10%mend qgetenv;
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 : This is public domain software. No guarantee as to suitability or accuracy is given or implied. User uses this code entirely at their own risk.