Bonsoir,
j'essaie de faire une macro qui vérifie que la valeur d'une variable est numérique :
Me renvoie à l'exécution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 %Macro Contenu_Numeric(MyvarIn); %global Flag; %let Flag=1; %local temp; %let temp=%sysfunc(input(&MyVarIn,best.)); %if &temp eq . %then %let Flag=0; %Mend;Et :ERREUR: The INPUT function referenced in the %SYSFUNC or %QSYSFUNC macro function is not found.
Produit à la compilation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 %Macro Contenu_Numeric(MyvarIn); %global Flag; %let Flag=1; %local temp; %let temp=%input(&MyVarIn,best.); %if &temp eq . %then %let Flag=0; %Mend;Sinon j'ai aussi essayé une autre macro :ERREUR: Macro keyword INPUT appears as text. A semicolon or other delimiter may be missing.
qui produit à l'éxécution, avec ou sans %sysfunc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 %Macro Contenu_Numeric(MyvarIn); %global Flag; %let Flag=1; %local l; %local n; %let l=%length(&MyVarIn); %do n=1 %to &l; %if %sysfunc(substr(&MyVarIn,&n,1)) not in ('0','1','2','3','4','5','6','7','8','9','.',',') %then %let flag=0; %end; %Mend;
ERREUR: The macro CONTENU_NUMERIC will stop executing.
ERREUR: A character operand was found in the %EVAL function or %IF condition where a numeric
operand is required. The condition was: %sysfunc(substr(&MyVarIn,&n,1)) not in
('0','1','2','3','4','5','6','7','8','9','.',',')
Si quelqu'un a une idée de syntaxe pour la 1ère ou la seconde macro, je suis preneur.
Merci
Partager