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

SAS Base Discussion :

Stockage pas dynamique avec call symput


Sujet :

SAS Base

  1. #1
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    548
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 548
    Points : 242
    Points
    242
    Par défaut Stockage pas dynamique avec call symput
    Bonjour,
    Le petit bout de programme suivant devrait afficher dans la log les n° de lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data _NULL_;
       set sashelp.class;
       call symput("Essai", _n_);
       put "&Essai";
    run;
    En fait, on obtient uniquement le nombre 19 (car la table sashelp.class contient 19 observations).
    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
              19
              19
              19
              19
              19
              19
              19
              19
              19
              19
              19
              19
              19
              19
              19
              19
              19
              19
              19
    NOTE: There were 19 observations read from the data set SASHELP.CLASS.
    Quelqu'un saurait-il me dire pourquoi il n'affiche pas les valeurs successives de _N_ ?

    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Statisticien/développeur BI
    Inscrit en
    Janvier 2012
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Statisticien/développeur BI
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 326
    Points : 1 142
    Points
    1 142
    Par défaut
    Bonjour,

    En fait, a la première exécution, ton programme te donne :

    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
    21
     
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    &Essai
    NOTE: There were 19 observations read from the data set SASHELP.CLASS.
    Et à la seconde exécution, la variable essai ayant été résolu à 19 lors de la première exécution, affiche 19 fois cette même valeur.

    Pour résoudre le problème, il faut récupérer la valeur de la variable essai dynamiquement (appel au macro processor), avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DATA _NULL_;
       SET sashelp.class;
       call symput("Essai", _n_);
       essai=symget('Essai');
       put essai;
    run;
    j'espère avoir été clair
    Sinon, pourquoi passer par une macro variable pour afficher les numéros de lignes ?

Discussions similaires

  1. Macro programme avec call symput
    Par joan_27 dans le forum Macro
    Réponses: 2
    Dernier message: 22/10/2013, 22h27
  2. Boucle avec un Call Symput
    Par debutant_sas dans le forum Macro
    Réponses: 2
    Dernier message: 24/10/2012, 15h55
  3. [PDO] ma requête n'est pas executé avec un nom de table dynamique
    Par Alexdezark dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/03/2010, 20h34
  4. macro avec call symput
    Par kabstat dans le forum Macro
    Réponses: 14
    Dernier message: 04/07/2008, 23h08
  5. comment creer un alias dynamique avec BDE et ODBC
    Par david33 dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/07/2002, 11h50

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