1. #1
    Nouveau membre du Club Avatar de I folima Elda
    Homme Profil pro
    Programmeur & Intégrateur
    Inscrit en
    décembre 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Programmeur & Intégrateur

    Informations forums :
    Inscription : décembre 2007
    Messages : 21
    Points : 26
    Points
    26

    Par défaut [SAS] Vider une liste de tables

    Bonjour à tous,

    Je viens vous demander une petite expertise. En effet, j'ai eu une rapide en SAS et malheureusement je pratique peu.
    Voilà mon soucis.

    Actuellement, nous utilisons divers tables pour faire des tests d'intégration de données dans ces dernières. Cependant, c'est assez contraignant car si on désire repartir de zéro, dans mon service, on supprime la/les table(s) pour les recréer ensuite.
    J'avais dans une clé USB perdu dans le tiroir, un bout de code permettant de vider l'ensemble des observations pour UNE table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    %let tlistfic = 
    	work.tab1
    ;
     
    data &tlistfic;
    	set &tlistfic (obs = 0 );
    run;
    L'idée ça serai de pouvoir effectuer cette "vidange" pour un ensemble de tables données. Quand j'essaie de mettre plusieurs tables dans ma variable, ça plante.

    Pouvez-vous me guider sur une solution permettant de donner en entrée un ensemble de table (voir depuis un fichier .txt ; je suis preneur des 2 solutions) et de permettre de vider ces tables? Sachant que je pense à terme, je devrais executer une script shell pour lancer cette macro SAS.

    Merci à vous

  2. #2
    Nouveau membre du Club Avatar de I folima Elda
    Homme Profil pro
    Programmeur & Intégrateur
    Inscrit en
    décembre 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Programmeur & Intégrateur

    Informations forums :
    Inscription : décembre 2007
    Messages : 21
    Points : 26
    Points
    26

    Par défaut Solution

    Après moult essai et lecture de documentation, je vous donne ma solution qui fonctionne parfaitement.
    Après à vous de l'adapter à ce que vous désirez.

    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
    %global listetable ;
    %let listetable = biblio.tab1 biblio.tab2 biblio.tab3 biblio.tab4 ;
    /* on sépare les tables avec des espaces */
     
    %macro LaMacro ;
    	%let count= %sysfunc(countw(&listetable.,%str( )));
    	%do i=1 %to &count. ;
    		%let table=%sysfunc(scan(&listetable.,&i.,%str( ),mo));
    		data &table. ;
    			set &table. (obs=0) ;
    		run ;
    	%end ;
    %mend LaMacro ;
     
    %LaMacro ;
    Problème résolu

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

Discussions similaires

  1. SQL2k requete sur une liste de table
    Par mikaeru dans le forum Développement
    Réponses: 4
    Dernier message: 19/11/2007, 09h36
  2. Vider une liste déroulante
    Par BkD35 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/09/2007, 17h55
  3. nombre de lignes d'une liste de tables
    Par ashtur dans le forum Administration
    Réponses: 15
    Dernier message: 17/04/2007, 18h44
  4. comment vider une liste de JList()
    Par Asmod_D dans le forum JDBC
    Réponses: 2
    Dernier message: 28/03/2007, 18h50
  5. Vider une liste :)
    Par mael94420 dans le forum WinDev
    Réponses: 2
    Dernier message: 03/08/2006, 12h34

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