Pour optimiser votre macro et éviter les erreurs de compilation sur des listes de valeurs contenant des caractères spéciaux comme des parenthèses ou des esperluettes, remplacez %scan par %qscan et %sysfunc(quote(...)) par %qsysfunc(quote(...)) afin de masquer les caractères de résolution macro pendant la génération du code dans la log.
Type : CREATION_INTERNE
Le code n'accède à aucune donnée externe ou table SAS. Il traite uniquement les chaînes de caractères passées en paramètres.
| 1 | %macro AHGifstat(var,values,quote=0,dlm=%str( )); |
| 2 | %local i one; |
| 3 | |
| 4 | %DO i=1 %to %AHGcount(&values,dlm=&dlm); |
| 5 | %IF "e %THEN %let one=%sysfunc(quote(%scan(&values,&i,&dlm))); |
| 6 | %ELSE %let one= %scan(&values,&i,&dlm); |
| 7 | %put %str(IF &var=&one THEN ); |
| 8 | %put %str( DO;); |
| 9 | %put %str( ); |
| 10 | %put %str( END;); |
| 11 | %put %str( ); |
| 12 | %END; |
| 13 | |
| 14 | %mend; |