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 :

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

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(%)&recherche%NRQUOTE(%)" ;
 RUN ;