h1

Macro : mini-programmes/routines pour tester la validité d’un nom de variable

juin 27, 2010

Après avoir appris les bases de la programmation, vous allez vous rendre compte que certaines tâches se répètent de programme à programme. Une partie d’entre eux peut se résumer à quelques lignes. Il est alors tentant d’écrire un programme de manière « officielle » et de le valider au lieux d’avoir à écrire le code à chaque fois.

Voici un petit exemple. Il s’agit du descriptif d’une macro qui va indiquer si le nom de variable donné est conforme aux règles requises par SAS. Ici vous avez la spécification et les tests de validation.

1. Spécification : Quelles sont les règles ?

Le nom d’une variable ne peut pas avoir plus de 32 caractères.

Le premier caractère est une des 26 lettres de l’alphabet ou un chiffre.

Les autres caractères  peuvent être des lettres de l’alphabet, un chiffre ou un tiret bas (underscore).

2. Spécification : Quelques contraintes ?

Vous développez une macro disons VARNAME_VALID ayant un paramètre VARNAME où vous pourrez entrer le nom d’une variable à tester. Si ce nom entre dans les critères de définition de SAS, alors une macro variable varname_ok=1 sinon la macro variable varname_ok=o.

3. Test Cases : Quand tout va bien: un nom de variable avec une seule lettre, deux lettre, commençant par un tiret bas, écrit en majuscule, avec un chiffre au milieu, avec un chiffre à la fin

Qu’est ce qui est testé : un nom de variable suivant les règles requises par SAS.

Quel est le code à soumettre :

%varname_valid(varname=a);
%varname_valid(varname=ab);
%varname_valid(varname=_ab);
%varname_valid(varname=AB);
%varname_valid(varname=ab1a);
%varname_valid(varname=ab1);

Quel est le résultat attendu :

La macro variable garde la valeur un

&varname_ok.=1

Un message dans la log est affiché :

NOTE: (VARNAME_VALID) Nom de variable correct.
NOTE: (VARNAME_VALID) Valeur actuelle :  ab

D’autres programmes peuvent être appelés après.

4. Test Cases : Violation des pré-requis de la macro

4.1 Violation pré-requis : le paramètre est manquant

Qu’est ce qui est testé : Un nom de variable doit être donné dans le paramètre de la macro

Quel est le code à soumettre : %varname_valid(varname=);

Quel est le résultat attendu :

La macro variable VARNAME_OK prend la valeur zéro

&varname_ok.=0

Un message dans la log est affiché :

WARNING: (VARNAME_VALID) Nom de variable incorrect.
WARNING: (VARNAME_VALID) Valeur actuelle:
EARNING: (VARNAME_VALID) Valeur attendue: un nom de variable.

D’autres programmes peuvent être appelés après.

4.2 Violation pré-requis : plus d’un nom de variable est entré

Qu’est ce qui est testé : Plus d’une variable est entrée dans le paramètre de macro

Quel est le code à soumettre : %varname_valid(varname= ab cd );

Quel est le résultat attendu :

La macro variable prend la valeur zéro

&varname_ok.=0

Un message dans la log est affiché :

WARNING: (VARNAME_VALID) Nom de variable incorrect.
WARNING: (VARNAME_VALID) Valeur actuelle : ab cd
WARNING: (VARNAME_VALID) Valeur attendue : un seul nom de variable.

D’autres programmes peuvent être appelés après.

5. Test Cases : Les règles définies par SAS pour nommer une variable

5.1  Un nom de variable : Au maximum 32 caractères

Qu’est ce qui est testé : un variable avec plus de 32 caractères

Quel est le code à soumettre : %varname_valid(varname=abcdefghijklmnopqrstuvwxyz1234567890);

Quel est le résultat attendu :

La macro variable prend la valeur z éro

&varname_ok.=0

Un message dans la log est affiché :

WARNING: (VARNAME_VALID) Nom de variable incorrect.
WARNING: (VARNAME_VALID) Valeur actuelle : abcdefghijklmnopqrstuvwxyz1234567890
WARNING: (VARNAME_VALID) Valeur attendue : 32 caractères au maximum.

D’autres programmes peuvent être appelés après.

5.2 Un nom de variable : commence par une lettre de l’alphabet (a-z) ou un tiret bas

Qu’est ce qui est testés : Un premier caractère différent d’une lettre de l’alphabet ou d’un tiret bas

Quel est le code à soumettre : %varname_valid(varname=é);

Quel est le résultat attendu :

La macro variable prend la valeur zéro

&varname_ok.=0

Un message dans la log est affiché :

WARNING: (VARNAME_VALID) Nom de variable incorrect.
WARNING: (VARNAME_VALID) Valeur actuelle : é
WARNING: (VARNAME_VALID) Valeur attendue : La première lettre est une des 26 lettres ou un tiret bas.

D’autres programmes peuvent être appelés après.

5.3 Un nom de variable : Après le premier caractère on peut avoir des lettres (a-z), des chiffres (0-9) et des tirets bas.

Qu’est ce qui est testé : un caractère différent d’une lettre de l’alphabet, d’un chiffre ou d’un tiret bas parmi les autres caractères de l’alphabet

Quel est le code à soumettre : %varname_valid(varname=1é);

Quel est le résultat attendu :

La macro variable prend la valeur zéro

&varname_ok.=0

Un message dans la log est affiché :

WARNING: (VARNAME_VALID) Nom de variable incorrect.
WARNING: (VARNAME_VALID) Valeur actuelle : 1é
WARNING: (VARNAME_VALID) Valeur attendue : La première lettre est une des 26 lettres ou un tiret bas.

WARNING: (VARNAME_VALID) Nom de variable incorrect.
WARNING: (VARNAME_VALID) Valeur actuelle : 1é
WARNING: (VARNAME_VALID) Valeur attendue : A partir du deuxième caractères, seuls des lettres,
WARNING: (VARNAME_VALID) des chiffres et un tiret bas sont autorisés.

Lecture complémentaire

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 )

Photo Facebook

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

Connexion à %s

%d blogueurs aiment cette page :