Bonjour,
J'ai en fait 2 tables SAS : DATA01 et DATA02.
Comment faire pour que :
DATA03 = DATA01 si DATA01 non vide
DATA03 = DATA02 si DATA01 vide
Merci d'avance pour votre réponse.
Bonjour,
J'ai en fait 2 tables SAS : DATA01 et DATA02.
Comment faire pour que :
DATA03 = DATA01 si DATA01 non vide
DATA03 = DATA02 si DATA01 vide
Merci d'avance pour votre réponse.
Bonjour.
Je suppose que "vide" veut dire que la table existe mais n'a aucune observation. Dans ce cas, je te propose d'ouvrir la table DATA01 dans une étape Data avec la fonction OPEN (ce n'est pas un SET, on ne lit rien à l'intérieur), de récupérer le nombre d'observations avec ATTRN (toujours sans lire les observations, comme on pourrait le faire avec une proc Contents) et de fermer la table (fonction CLOSE). Pour que ça marche, il faut que DATA01 existe. Ensuite, il n'y a plus qu'à faire le SET qui va bien en fonction du nombre d'observations ;
Une variante si "vide" veut dire "n'existe pas" sera un peu plus compliquée, parce qu'il faudra utiliser un peu de macro-langage. Cela dit, si tu es en version 9, le programme peut être court, à défaut d'être lisible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 /* préparation du jeu de test */ DATA work.t01 ; SET sashelp.class (OBS=0) ; /* à changer en OBS=2 pour faire un 2e test */ RUN ; DATA work.t02 ; SET sashelp.class ; RUN ; /* le programme */ DATA work.t03 ; /* récupération du nb d'obs de T01 */ dsid = OPEN("work.t01") ; nb01 = ATTRN(dsid, "NOBS") ; dsid = CLOSE(dsid) ; IF nb01 > 0 THEN SET work.t01 ; ELSE SET work.t02 ; RUN ; /* avec OBS=0, T01 est vide --> T03 contient T02 ; avec OBS=2, T02 n'est pas vide --> T03 contient T01 */
Olivier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 DATA work.t03 ; SET %SYSFUNC(IFC(%SYSFUNC(EXIST(work.t01)), work.t01, work.t02)) ; RUN ;
Un tout grand merci pour tes solutions !!
C'est tout simplement parfait.![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager