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.
En plaçant un %put dans cette macro je vois dans la log les bonnes valeurs affectées aux deux macro-variables.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 revanche dans l'exécution suivante, je ne récupère pas la valeur dans &fichierATraiterSE.
Je n'arrive pas à comprendre pourquoi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 %global fichierATraiter; %let fichierATraiter=I0207333CH042; %Global fichierATraiterSE; %RetireExtension(&fichierATraiter,&fichierATraiterSE);en dehors de %RetireExtension ne renvoie pas I0207333CH042.
Code : Sélectionner tout - Visualiser dans une fenêtre à part %put &fichierATraiterSE;
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 :
Si &fichierATraiter ne contient pas de point alors exécuter :
Code : Sélectionner tout - Visualiser dans une fenêtre à part %let fichierATraiterSE=%substr(&fichierATraiter,1,%index("&fichierATraiter",.)-2);
Mais on ne peut pas utiliser de %if %then en dehors de macro-programmes ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part %let fichierATraiterSE=&fichierATraiter;
Partager