top of page

BOUCLES - TESTS

Le langage MACRO permet de faire des boucles et des tests. Il faut juste rajouter le symbole % devant les mots clés. Il ne faut pas oublier la macro-fonction %END après les actions qui doivent être faites.

Boucle :

%MACRO boucle;

%DO i=1 %TO 10 %BY 2; /* Pour i allant de 1 à 10, avec un intervalle de 2. */

Action(s) de chaque boucle

%END;

%MEND boucle;

Test :

%MACRO test(i);

%IF &i=1 %THEN %DO; /* Si le paramètre i est égal à 1 alors affiche Test ok. */

%PUT Test ok;

%END;

%ELSE %DO; /* Sinon affiche Test non ok. */

%PUT Test non ok;

%END;

%MEND test;

 

%test(1); /* Pour i=1, le test sera validé : affichage de Test ok. */

%test(2); /* Pour i=2, le test ne sera pas validé : affichage de Test non ok. */

Dans un macro-programme, il est parfois utile d'utiliser une boucle dans une étape DATA. Il faut donc écrire l'étape DATA sur plusieurs lignes.

%MACRO autoDo(table);

DATA /* Début de l'étape DATA */

%DO i=1 %TO 12; /* Création de 12 tables (vente1 à vente12). */

vente&i /* Le nom des tables crées est la concaténation du mot vente avec la macro-variable compteur i (allant de 1 à 12). On ne met pas de point virgule car l'étape DATA n'est pas finie */

%END;

error /* Création de la table nommée error (en dehors de la boucle). */

; /* Fin de l'étape DATA */

SET &table; /* Utilise les données de la table dont le nom est contenue dans le paramètre table. */

IF mois=1 THEN OUTPUT vente1; /* On doit faire la première condition avant la boucle. */

%DO i=2 %TO 12;

ELSE IF mois=&i THEN OUTPUT vente&i; /* Si le mois est égal à i (allant de 2 à 12) alors les observations sur ce mois sont envoyées dans la table correspondante (vente2 à vente12). */

%END;

ELSE OUTPUT error; /* Si aucune des conditions précédentes ne sont remplies (le numéro du mois n'est pas compris entre 1 et 12) alors les observations sur ce mois sont envoyées dans la table error. */

RUN;

%MEND autoDo;

 

 

%autoDo(tableVente); /* Le paramètre table prend la valeur de tableVente. Les données utilisées dans le programme ci-dessus seront donc celles de la table nommée tableVente. */

bottom of page