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 11/07/2011, 14h43   #1
Candidat au titre de Membre du Club
 
Femme vallery camiade
Étudiant
Inscription : avril 2011
Messages : 22
Détails du profil
Informations personnelles :
Nom : Femme vallery camiade
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 22
Points : 11
Points : 11
Par défaut Macro variable qui divise le programme en plusieurs blocs

Bonjour a tous
J'aimerai utiliser une macro variable afin de diviser mon programme en plusieurs blocs , et en fonction de la valeur de cette variable je peut choisir lequel des blocs j'aimerai exécuter.

j'ai essayé ça
Citation:
%IF &MACRO_CHOIX_PROG.='TOUS' %THEN %DO ;
mais je reçois le message d'erreur suivant :
Citation:
The %IF statement is not valid in open code.
le méme pour %THEN et %DO

je vous remercie en avance de pouvoir m'aider.
vallery est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 14h58   #2
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
hello,
visiblement tes instructions tu les as écrit dans un code ouvert, j'entends pas un code ouvert ( tous "statement" non entouré d'une étape data; ...run;
ou proc; ... run; ou un macro langage %macro ma_macro; .... %mend;
peu de code SAS fonctionne en mode ouvert. on trouve les options; les titres,... mais jamais de %IF %THEN ... ou if ...then.

si tu veux qu'on t'aide , essaies de poster ton programme.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/07/2011, 15h36   #3
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
@SAM : le code ouvert, ce n'est pas exactement ce que tu décris (ou alors je n'ai pas compris). Parce qu'à te lire, je trouve qu'un LIBNAME fonctionne en code ouvert.
Pour moi, "open code" c'est tout ce qui n'est pas inclus à l'intérieur d'un macro-programme. C'est à dire que quasiment tout fonctionne en code ouvert, sauf %IF, %DO, %GOTO et peut-être quelques autres instructions du langage macro.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 15h53   #4
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
Citation:
Envoyé par s_a_m Voir le message
hello,
j'entends pas un code ouvert ( tous "statement" non entouré d'une étape data; ...run;
ou proc; ... run; ou un macro langage %macro ma_macro; .... %mend;
peu de code SAS fonctionne en mode ouvert. on trouve les options; les titres,... mais jamais de %IF %THEN ... ou if ...then.
au fait Olivier, moi je parlais des "statement". parce que pour moi le SELECT, le WHERE le DO ,... ne marchent pas en dehors de ces étapes.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/07/2011, 18h37   #5
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Je lis bien effectivement ta remarque. Mais prenons donc le cas contraire : le message dit "%IF n'est pas valide en code ouvert". Donc dans ta définition il devrait être intégré dans (au choix ?) une étape Data, une procédure ou un macro-programme.
C'est dans ce "choix" ou cette équivalence que je coince : les syntaxes "non valides en code ouvert" sont uniquement, à ma connaissance, des instructions macro qui n'ont pas le droit d'être employées en dehors d'un macro-programme. Et du coup je ne vois pas le rapport avec les étapes Data et les procédures, qui sont sur un autre plan que le langage macro puisque traitées par un autre compilateur.
Je vois d'ailleurs dans la doc ce qui me semble être une définition... (c'est au paragraphe qui suite la NOTE).
Citation:
A %LET statement in open code (outside a macro definition)
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 09h32   #6
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
non pas dans un choix , Le %if %DO ,conditions , boucles Macros %DO %TO ne marchent que dans le cas de code encapsulé dans un: %macro ; %mend;

Ce que je voulais expliquer ,c'est qu'en général les instructions SAS se font qu'à l'intérieur des blocs DATA, PROC. Puisqu'on ne peut pas mettre de if, ou where ou autre en dehors de ces étapes.

J'ai peut être raté mon explication
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h00   #7
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
SAM, je crois qu'on dit la même chose mais qu'on ne se comprend pas. Donc enterrons là cette discussion.
Par contre pour le problème initial, je pense que notre diagnostic est commun : il faudrait que Vallery encapsule son code dans un macro-programme pour avoir le droit d'y intégrer des %IF.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h20   #8
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Et je crois qu'il faudrait des doubles quotes au lieu des simples
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h21   #9
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
That's right.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h24   #10
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
@Brice: qu'elle teste déjà avec un code macro .Après on verra s'il n'y a pas d'autres surprises.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 16h26   #11
Candidat au titre de Membre du Club
 
Femme vallery camiade
Étudiant
Inscription : avril 2011
Messages : 22
Détails du profil
Informations personnelles :
Nom : Femme vallery camiade
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 22
Points : 11
Points : 11
Bonjour

Oui vous avez raison , j'ai intégrer mon code dans un macro programme et ça marche maintenant !
je vous remercie tous pour vos réponses!
Je ne sais pas comment j'aurai réussis mon projet de stage sans vos aides !!!
je remercie tout l'équipe de ce forum !
vallery 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 23h50.


 
 
 
 
Partenaires

Hébergement Web