Bonjour à tous,
J'ai cette macro variable en début de programme :
Ensuite mon code est organisé de cette façon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 %global choix ; %let choix = "4" ; /****partie 1 (1) ; partie 2 (2) ; partie 3 (3) partie 1 et 3 (4)****/ %put &choix ;
J'ai ensuite cette data en fin de code, qui permet d'exécuter une partie du code choisi précédemment par l'utilisateur grace à la macro variable &choix.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 %macro un() ; .... %mend ; %macro deux() ; .... %mend ; %macro trois() ; .... %mend ;
mais quand je choisi le choix "4", SAS exécute la macro un, puis la deux et la trois alors que j'aimerai qu'il éxécute seulement la un et la trois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 data _null_ ; if &choix = "1" then %un() ; if &choix = "2" then %deux() ; if &choix = "3" then %trois() ; if &choix = "4" then %un() %trois() ; run ;
Est-ce que c'est possible?
Aussi, j'ai une erreur, SAS me souligne "data" (c'est le premier data de la macro un()), cette data marche (c'est une importation de fichier) mais pas quand je la lance depuis le data des if. (SAS n'a pas l'air d'apprécier le double data : data des if et data de l'import).
Merci d'avance!NOTE: Line generated by the invoked macro "un".
data lib.donnees; infile "&chemin.\Données\donnees.csv" delimiter = ...
ERROR 180-322: Statement is not valid or it is used out of proper order.
Partager