Bonjour tout le monde,
Je cherche à construire une liste contenant les variables d'une table SAS et leur longueur, c'est à dire de la forme :
KEYVAR 8 VAR1 8 VAR2 8 VAR3 8 VAR4 8 VAR5 8 VAR6 8 VAR7 8 VAR8 8
Pour cela je construit 2 listes (une des noms de variables et l'autre de leur longueur) :
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 /*--------------------------------------------------------------------*/ /*---RECUPERER LA LISTE DES NOMS DES VARIABLES ET DE LEUR LONGUEUR----*/ /*--------------------------------------------------------------------*/ PROC SQL NOPRINT; CREATE TABLE NAMELIST2 AS SELECT NAME,LENGTH FROM DICTIONARY.COLUMNS WHERE LIBNAME EQ "WORK" AND MEMNAME EQ "TABLE1"; %SYMDEL NAMELIST2; /* POUR SUPPRIMER LA MACRO VARIABLE */ SELECT NAME INTO :LISTNAME SEPARATED BY ' ' FROM NAMELIST2; SELECT LENGTH INTO :LISTLENGTH SEPARATED BY ' ' FROM NAMELIST2; QUIT; %PUT &LISTNAME; %PUT &LISTLENGTH;
Ensuite pour construire la liste voulue, j'essaie ce code (mais ça ne marche pas )
Merci de votre aide.
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 DATA _NULL_; RETAIN I 1; TMP1=SCAN("&LISTNAME",I); TEMP=%STR(&LISTLENGTH); TMP2=SCAN("&TEMP",I); DO WHILE (TMP1 NE ' '); CALL SYMPUT (BIGLIST,COMPRESS(TMP1)|| '' || COMPRESS(%STR(TMP2))); I+1; TMP1=SCAN ("&LISTNAME",I); TMP2=SCAN ("&LISTLENGTH",I); END; RUN; %PUT &BIGLIST;
ash_rmy.
Partager