IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macro Discussion :

Construire une liste de variables avec leur longueur


Sujet :

Macro

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut Construire une liste de variables avec leur longueur
    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 )

    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;
    Merci de votre aide.

    ash_rmy.

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    C'est bon : j'ai trouvé la fonction SAS CATX.

    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
    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 CATX(' ',NAME,LENGTH) INTO :LNAMELENGTH SEPARATED BY ' ' FROM NAMELIST2;
     
    *
       DROP TABLE NAMELIST2;  /* POUR SUPPRIMER LA TABLE NAMELIST1 */
     
       QUIT;
     
    %PUT &LNAMELENGTH;
    ash_rmy.

  3. #3
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Ton programme est très intéressant pour obtenir des infos sur les variables.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/06/2015, 14h29
  2. construire une liste a partir d'une variable string
    Par Palsajicoco dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 12/07/2011, 10h05
  3. [MySQL] Construire une liste avec les résultat d'une requête
    Par Requiem11 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/04/2009, 23h18
  4. Construire une liste de sélection avec 2 tables
    Par domdas dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/08/2006, 14h15
  5. Comment initialiser une liste de composants avec une boucle ?
    Par EricSid dans le forum Composants VCL
    Réponses: 5
    Dernier message: 06/04/2005, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo