h1

Valeur formatée utilisée pour définir la macro variable. Attention !

janvier 11, 2010

Vous imaginez qu’un format ne sert qu’à l’affichage des données et que lorsque vous faîtes une opérations sur les données vous travaillez sur les données brutes. Et pourtant, avec les macro variables vous pouvez avoir des surprises. Démonstration.

1. L’exemple qui marche comme prévu

Dans un premier temps, le data set (ONE) est créé. Il a une variable numérique x. Dans ce data set, il n’y a qu’une observation x=123456789012 soit une seule valeur composée de 12 chiffres. Un format 12. est appliqué à la variable.

data one;
x=123456789012;
format x 12.;
run;

Dans un second temps une macro variable est créée.

proc sql;
select x into : x
from one;
quit;

Dans un troisième temps,ne sont sélectionnées que les observations où x=123456789012.

data two;
set one (where=(x=&x.));
run;

Le data set TWO a alors toujours une observation.

2. Le détail qui fait la différence

Maintenant enlevé le format permanent 12. ou mettez à la place un format x8.

data one;
x=123456789012;
*format x 12.;
format x 8.;
run;

C’est la valeur formatée de x qui est sauvegardée dans la macro variable et non la valeur interne. Comme un format de 8. ne suffit pas pour afficher l’intégralité du nombre, la valeur est transformée et ne peut plus être précisément égale à la valeur initiale. Donc attention !

proc sql;
select x into : x
from one;
quit;

Cette fois-ci, la seule observation de data set est perdue.

data two;
set one (where=(x=&x.));
run;

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :