logo

Macro : Utilisation d’une macro-variable dans un LIKE

Je voudrais utiliser dans un LIKE « %…% » la valeur d’une macro-variable à la place des …
Le programme suivant ne fonctionne pas :

<strong>%LET recherche = ar ;</strong>
<strong>PROC PRINT DATA = sashelp.class ;</strong>
<strong>    WHERE soc LIKE "%&amp;recherche%" ;</strong>
<strong>RUN ;</strong>

Comment résoudre ce problème ?

 

Il faut masquer au macro-compilateur les deux %. Pour cela, on utilisera la macro-fonction %NRQUOTE, qui masque des caractères pendant la phase de résolution (transformation du programme par le macro-compilateur)… Le macro-compilateur n’est donc intéressé que par l’expression &recherche, qui ne pose pas de problème. Il est ensuite transmis le programme correct au compilateur SAS, qui aura le droit de voir les %.

%LET recherche = ar ;
 PROC PRINT DATA = sashelp.class ;
    WHERE soc LIKE "%NRQUOTE(%)&amp;recherche%NRQUOTE(%)" ;
 RUN ;