|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Chercheur en informatique Inscription : décembre 2011 Messages : 4 ![]() |
Bonsoir
j'ai un souci avec cette petite macro: Code :
Merci d'avance Marcus |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Bonjour Marcus.
Ton code illustre parfaitement la différence de fonctionnement entre un IF et un %IF, qui sont deux instructions très différentes. IF est une instruction de l'étape DATA, qui est exécutée par le compilateur SAS, à chaque observation lue dans les données en entrée. Les conditions portent sur les valeurs d'une variable SAS pour l'observation en cours. %IF est une instruction macro, exécutée par le compilateur macro avant toute exécution de code SAS. Les conditions portent sur des valeurs de macro-variables, et le résultat est un morceau de code, pas une action. Pour avoir ton résultat espéré, laisse des IF normaux dans ton code. Avec ton %IF actuel, comme le compilateur macro ne connaît pas les variables SAS, les conditions &trt=1 est évaluée à tt=1, ce qui signifie pour le compilateur macro "est-ce que le texte tt est le même que le texte 1 ?". C'est évidemment faux, donc on saute au %ELSE. Une dernière chose : IF cas1 THEN ...code1 ; IF cas2 THEN ...code2 ; ELSE ...code3 ; (avec IF ou %IF d'ailleurs) quand cas1 est vrai, tu exécutes code1 ET code3. Un ELSE IF s'impose au milieu. Bon courage. Olivier |
|
|
20
|
|
|
#3 |
|
Invité de passage
![]() Chercheur en informatique Inscription : décembre 2011 Messages : 4 ![]() |
Bonjour Olivier
Merci pour ton éclaircissement. Mcus |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com