Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Macro
Macro Forum d'entraide sur le langage Macro de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/12/2011, 11h54   #1
Candidat au titre de Membre du Club
 
Femme
Conseil - Consultant en systèmes d'information
Inscription : novembre 2011
Messages : 80
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Maroc

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : Conseil

Informations forums :
Inscription : novembre 2011
Messages : 80
Points : 12
Points : 12
Par défaut Expressions régulières dans une %macro

Bonjour,
J'ai un problème à utiliser des expressions régulières dans une macro. Dans une étape Data, le code suivant retourne le résultat suivant :

Parenthèse_elementaire=1 | t=1 | motif3= (3+4)

Code :
1
2
3
4
5
6
7
8
9
10
11
DATA a;
length calcul $100.;
calcul="(5+3)*2*((1>=0;-4;5)>=0;7;5*(3+4))";output;
run;
DATA b;
SET a;
parenthese_elementaire=prxparse('s/(.*)(\()([^\(\)]*)(\))(.*)/$1[$3]$5/');
t=prxmatch(parenthese_elementaire,calcul);
motif3=translate('('!!strip(prxposn(parenthese_elementaire,3,calcul))!!')','()','[]');
output;
run;
Mais quand je veux passer par une macro, ca donne un résultat différent:
parenthèse_elementaire=24(qui s'incrémente à chaque exécution) | t=0 | motif3=blanc

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
proc sql;
CREATE TABLE a (calcul char(1000));
INSERT INTO a VALUES ("(5+3)*((1>=0;-4;5)>=0;7;5*(3+4))");
quit;
%macro decoupe();
proc sql;
SELECT calcul INTO :calcul FROM a;
quit;
%let parenthese_elementaire=%sysfunc(prxparse('s/(.*)(\()([^\(\)]*)(\))(.*)/$1[$3]$5/'));
%let t=%sysfunc(prxmatch(&parenthese_elementaire,&calcul));
%let motif3=%sysfunc(prxposn(&parenthese_elementaire,3,&calcul));
%mend;
%decoupe();
Merci de m'aider à identifier le problème.
aminao est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2011, 12h09   #2
Candidat au titre de Membre du Club
 
Femme
Conseil - Consultant en systèmes d'information
Inscription : novembre 2011
Messages : 80
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Maroc

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : Conseil

Informations forums :
Inscription : novembre 2011
Messages : 80
Points : 12
Points : 12
Je viens de trouver le prob, il faut enlever les quotes pour qu'il arrive à parser l'ER:

Code :
%let parenthese_elementaire=%sysfunc(prxparse('s/(.*)(\()([^\(\)]*)(\))(.*)/$1[$3]$5/'));
aminao est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h01.


 
 
 
 
Partenaires

Hébergement Web