Posts Tagged ‘%global’

h1

Quand l’option NOLABEL réserve des surprises !

février 22, 2010

L’option global NOLABEL permet notamment de ne pas afficher les labels dans un PROC SQL. Comme tout option globale, il est courant d’ajouter ce type d’instruction en début de programme. Est-ce que cette option a des conséquences sur l’allocation des libellés sur les variables ou ailleurs ?

1. Assigner un label aux variables du data set CLASS

Dans l’exemple qui suit un data set CLASS est créé. Un libellé est ajouté aux variables NAME et HEIGHT. Au préalable l’option global NOLABEL est ajoutée.

options nolabel;

data class;
label name = ‘Nom’ height=‘Taille’;
set sashelp.class;
run;

2. Que constate t-on lorsque l’option NOLABEL est active ?

En consultant la description des données avec un PROC CONTENTS ou un PROC SQL, les labels n’apparaissent pas.

proc contents data=class varnum;
run;


proc sql;
select name, label
from dictionary.columns
where upcase(libname)=‘WORK’ and
upcase(memname)=‘CLASS’;
quit;


3. Que se passe t-il une fois que l’option LABEL est de nouveau active ?

Une fois l’option LABEL actif, les libellés sont bien assignés aux variables. Ils ne sont simplement invisibles tant que l’option NOLABEL est active.

options label;

proc contents data=class varnum;
run;

proc sql;
select name, label
from dictionary.columns
where upcase(libname)=‘WORK’ and
upcase(memname)=‘CLASS’;
quit;

h1

Un besoin ponctuel de variables macros

janvier 24, 2008

Horloge

Cet article requiert une connaissance préalable de la syntaxe pour créer des macros et des variables macros.

1. Deux types de variables macros utilisateur : lorsque vous définissez un paramètre dans votre macro, vous créez une variable macro. Vous pouvez récupérer la valeur de cette variable macro n’importe où à l’intérieur de votre macro. Vous ne pourrez pas l’appeler en dehors de votre macro par défaut. C’est d’ailleurs ce que vous voulez la plupart du temps. Ainsi vous pourrez redéfinir une variable macro du même nom, plus tard, sans risquer d’utiliser une valeur antérieure. On parle de variable macro locale (local macro variable). Par contre, si vous voulez l’utiliser en dehors de la macro, vous devez clairement le préciser avant de lui assigner une valeur. On parle alors de variable macro globale (global macro variable).

2. Trois mots-clés pour afficher les statuts des variables macros dans la log : %put pour savoir quel statut porte votre variable macro, vous pouvez utiliser le statement propre au langage macro afin de les afficher dans la log. On fera suivre %put des mots-clés suivants :

  • _global_ ou _local_ pour limiter la sélection à un statut donné parmi les macros variables utilisateur,
  • _user_ pour voir toutes macro-variables de l’utilisateur
  • _all_ pour lister toutes les variables macros, y compris celles définies par le système SAS.

3. Changer de statut : pour qu’une variable macro a priori locale soit globale, faites usage du statement propre au langage macro %global suivi du nom des variables séparées par des espaces.

4. Un exemple de variable macro locale : Dans ce premier exemple, la variable macro est créée dans une macro. On appelle la macro et affiche la valeur de la macro variable dans la log via le %put statement inclus dans la macro. Une fois l’appel de macro terminé, on affiche toutes les variables macros pour constater que la macro variable locale n’existe plus.

%macro ex_local(x=);
   %put _all_;
%mend ex_local;
%ex_local;
%put _all_;

5. Un exemple de variable macro globale : dans ce second exemple, la macro variable définie dans la macro est préalablement enregistrée comme globale. On appelle la macro et montre sa valeur grâce au %put statement inséré dans la macro. Après l’appel de macro, on liste toutes les variables macros dans la log pour remarquer que la variable macro qui est globale est toujours présente.

%global y;
%macro ex_global(y=);
   %put _local_;
%mend ex_global;
%ex_global;
%put _all_;