Bonjour,
Je suis débutant avec SAS et pas à l'aise avec cet outil.
Je souhaiterais exécuter une partie de mon code uniquement si une macrovariable n'est pas vide. Et je bute.
Dans un premier temps, je peuple ma macrovariable en concaténant les noms des tables d'une bibliothèque :
Parfois ma macrovariable &ListeEIEIG est vide. J'aimerais donc que l'étape d'après ne s'exécute que si &ListeEIEIG n'est pas vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 /* Liste des listing d'EI qui sont des EIG : ListeEIEIG */ /* Il s'agit de toutes les tables de la bibliothèque Dl dont le nom commence par Liste_ei_eig_ */ /* La liste est consitutée des noms des tables séparés par ' ' */ PROC SQL NOPRINT ; SELECT CATT("Dl.",MEMNAME) INTO :ListeEIEIG SEPARATED BY ' ' FROM SASHELP.VSTABLE WHERE UPCASE(libname) = "DL" AND UPCASE(MEMNAME) EQT "LISTE_EI_EIG_" ; QUIT ;
En m'appuyant sur l'ouvrage SAS l'essentiel, j'ai testé :
J'obtiens le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 /* Si &ListeEIEIG n'est pas vide */ /* Jointure des tables listées, jointure selon SUBJECT_REF */ /* Table résultante : Dl.Liste_EI_EIG */ %IF %BQUOTE(&ListeEIEIG) NE "" %THEN %DO; DATA Dl.Liste_EI_EIG_%SYSFUNC(today(),yymmddn.) ; MERGE &ListeEIEIG. ; BY SUBJECT_REF ; RUN; %END;
WARNING: Apparent symbolic reference LISTEEIEIG not resolved.
WARNING: Apparent symbolic reference LISTEEIEIG not resolved.
ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric operand is required. The condition
was: %BQUOTE(&ListeEIEIG) NE ""
Pouvez-vous me dire ce que j'ai mal compris ou mal fait pour résoudre ce problème ?
Merci d'avance pour votre aide,
Bonne journée
Partager