Archive for the ‘retain’ Category

h1

Qui a la priorité : RETAIN ou SET ?

mars 30, 2010

L’instruction RETAIN permet d’assigner une valeur à une variable.  La valeur est reconduite à l’observation suivante à moins d’être changée par une autre instruction au cours de l’étape data.

Le point à retenir dans cet article est que si la variable existe déjà, RETAIN ne va pas pouvoir réécrire la valeur.

Afin de représenter cette logique dans son programme, il peut-être conseillé d’écrire l’instruction RETAIN avant une instruction qui lie de nouvelles donnée ; SET par exemple.

1. Voir la logique

La variable qui existe dans le fichier d’origine : Dans cet exemple, on voit que la variable AGE qui existe dans le fichier d’origine SASHELP.CLASS n’est pas changée par l’instruction RETAIN.

La variable qui n’existe pas avant : Par contre la variable AGE2 qui n’existe pas dans le fichier d’origine prend bien la valeur donnée dans l’instruction RETAIN.

data class;
set sashelp.class;
retain age 0 age2 0;
run;

proc print data=class noobs;
run;

2. Etre logique

Afin de respecter cette logique, l’instruction RETAIN est à placer avant l’instruction SET.

data class;
retain age 0 age2 0;
set sashelp.class;
run;

proc print data=class noobs;
run;

Lectures complémentaires

SAS Online Doc

  • RETAIN Statement