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