Publié le :
Macro EXTERNE

Écrire les variables d'environnement dans un dataset SAS

Ce code est également disponible en : Deutsch English
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Cette macro exécute la commande système 'set' via un 'pipe' pour capturer toutes les variables d'environnement. Elle analyse ensuite la sortie pour créer un dataset SAS© contenant le nom et la valeur de chaque variable. Le dataset de sortie par défaut est '_env2ds', mais peut être personnalisé. Le code est conçu pour être générique mais mentionne une alternative pour Windows 7 où les 'pipes' anonymes pourraient ne pas fonctionner.
Analyse des données

Type : EXTERNE


Les données sont générées dynamiquement en exécutant la commande système 'set' via l'instruction 'filename pipe'. La source n'est donc pas un fichier préexistant mais la sortie standard de cette commande système, qui liste les variables d'environnement de la session.

1 Bloc de code
FILENAME
Explication :
Cette instruction associe le fileref '_env2ds' à un 'pipe'. Elle exécute la commande système 'set' et capture sa sortie standard pour qu'elle puisse être lue comme un fichier plat par SAS.
Copié !
1filename _env2ds pipe 'set';
2 Bloc de code
DATA STEP Data
Explication :
Ce bloc DATA STEP lit les données provenant du 'pipe' _env2ds. Pour chaque ligne lue ('input'), il extrait le nom de la variable d'environnement en prenant la partie avant le signe '=' et sa valeur en prenant la partie après. Une condition vérifie que la valeur n'est pas vide avant de l'assigner. Les variables 'name' et 'value' sont créées avec des longueurs prédéfinies et des labels descriptifs.
Copié !
1DATA &dsout;
2 LENGTH name $ 40 value $ 1000;
3 INFILE _env2ds;
4 INPUT;
5 name=scan(_infile_,1,"=");
6 IF scan(_infile_,2,"=") NE " " THEN value=substr(_infile_,index(_infile_,"=")+1);
7 label name="Environment Variable Name"
8 value="Environment Variable Value"
9 ;
10RUN;
3 Bloc de code
FILENAME
Explication :
Cette instruction libère le fileref '_env2ds' et ferme le 'pipe' associé, ce qui est une bonne pratique de nettoyage des ressources.
Copié !
1filename _env2ds clear;
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.