Affecter une valeur à une macro-variable dans un macro-programme
Bonjour,
Avec le macro-programme suivant, j'aimerais retirer tous les caractères de MyVarIn placés après le point (inclus) et affecter ce résultat à MyVarOut.
Ou bien affecter à MyVarOut la valeur de MyVarIn si MyVarIn ne contient pas de point.
Code:
1 2 3 4 5
| %Macro RetireExtension(MyVarIn,MyVarOut) / store;
/* on supprime le point et tout ce qui est derrière */
%if %index("&MyVarIn",.)>0 %Then %let MyVarOut=%substr(&MyVarIn,1,%index("&MyVarIn",.)-2);
%if %index("&MyVarIn",.)<=0 %Then %let MyVarOut=&MyVarIn;
%Mend; |
En plaçant un %put dans cette macro je vois dans la log les bonnes valeurs affectées aux deux macro-variables.
En revanche dans l'exécution suivante, je ne récupère pas la valeur dans &fichierATraiterSE.
Code:
1 2 3 4
| %global fichierATraiter;
%let fichierATraiter=I0207333CH042;
%Global fichierATraiterSE;
%RetireExtension(&fichierATraiter,&fichierATraiterSE); |
Je n'arrive pas à comprendre pourquoi
Code:
%put &fichierATraiterSE;
en dehors de %RetireExtension ne renvoie pas I0207333CH042.
Si quelqu'un a une idée je suis preneur.
Merci. ;)
P.S.
En fait ce que je voudrais arriver à faire c'est :
Si &fichierATraiter contient un point alors exécuter :
Code:
%let fichierATraiterSE=%substr(&fichierATraiter,1,%index("&fichierATraiter",.)-2);
Si &fichierATraiter ne contient pas de point alors exécuter :
Code:
%let fichierATraiterSE=&fichierATraiter;
Mais on ne peut pas utiliser de %if %then en dehors de macro-programmes ...
;)