Soit le programme suivant :
Une table a est créée dans la librairie maLib.
Première étape : dans le vecteur de travail une variable total apparaît qui vaut 0
total | ||
---|---|---|
0 |
Puis est recopiée la première ligne de b.
coefficient | v1 | v2 |
---|---|---|
1 | 4 | 6 |
2 | 3 | 5 |
3 | 5 | 4 |
total | coefficient | v1 | v2 |
---|---|---|---|
0 | 1 | 4 | 6 |
Puis au champ coefficient est ajouté 1. Ensuite on y ajoute une variable nommée un qui vaut 1.
coefficient | v1 | v2 |
---|---|---|
1 | 4 | 6 |
2 | 3 | 5 |
3 | 5 | 4 |
total | coefficient | v1 | v2 | un |
---|---|---|---|---|
0 | 2 | 4 | 6 | 1 |
Enfin, on affecte à total sa valeur actuelle augmentée de la valeur de coefficient.
coefficient | v1 | v2 |
---|---|---|
1 | 4 | 6 |
2 | 3 | 5 |
3 | 5 | 4 |
total | coefficient | v1 | v2 | un |
---|---|---|---|---|
2 | 2 | 4 | 6 | 1 |
On a pour le moment travaillé uniquement sur le vecteur de travail, qui contient la seule ligne courante.
RUN enregistre le vecteur de travail en 1e ligne de la table a et réinitialise le vecteur de travail.
coefficient | v1 | v2 |
---|---|---|
1 | 4 | 6 |
2 | 3 | 5 |
3 | 5 | 4 |
total | coefficient | v1 | v2 | un |
---|---|---|---|---|
2 | 2 | 4 | 6 | 1 |
Si bien qu'au début de l'étape 2, total vaut 0, puis on récupère la ligne 2 de b, on incrémente le coef, on ajoute la colonne un, on met à jour total avec le coef courant.
Voilà donc le résultat du programme :
total | coefficient | v1 | v2 | un |
---|---|---|---|---|
2 | 2 | 4 | 6 | 1 |
3 | 3 | 3 | 5 | 1 |
4 | 4 | 5 | 4 | 1 |
En conclusion, on voit qu'il est impossible de calculer de cette manière le cumulé du coefficient, puisque d'une ligne sur l'autre, SAS oublie les valeurs précédentes.
Il y a cependant un moyen : demander à SAS de se souvenir de la valeur précédente d'une variable, grâce à l'instruction RETAIN (voir paragraphe "Génération de variables").