Bonsoir,
Pour chaque ligne de l.corps, la macro IsInTable vérifie que la valeur de org est dans sasuser.nomorg.
En fonction du résultat, j'aimerais que la valeur de CodeQual de la table toto soit modifiée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 dm log 'clear' editor; data toto; set l.corps(obs=10); length CodeQual $ 255; CALL EXECUTE ('%IsInTable(sasuser.nomorg, org,' || org ||', TRUE, TRUE);'); run;
J'obtiens l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 %macro IsInTable(MyTable, MyVar, MyValue, DisplayWarning, UpdateTable); %global Trouve; %let Trouve=FALSE; %global NbOcc; proc sql noprint; SELECT COUNT(1) INTO :NbOcc FROM &MyTable WHERE &MyVar=&MyValue; quit; %if &UpdateTable=TRUE %then CodeQual="OK"; %If &NbOcc>0 %THEN %let Trouve=TRUE; %if &DisplayWarning=TRUE AND &Trouve=FALSE %THEN %put "ATTENTION," &MyValue "pas trouvée pour" &MyVar; %if &UpdateTable=TRUE AND &Trouve=FALSE %THEN CodeQual="PAS OK"; %mend;
Je n'arrive pas à trouver ce qui ne va pas.NOTE: Ligne générée par la routine CALL EXECUTE.
10 +
CodeQual="OK" CodeQual="PAS OK";
--------
180
ERREUR 180-322: Instruction incorrecte ou mal utilisée.
Si quelqu'un a une idée je suis preneur![]()
Partager