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 :

Fonction CAT et "buffer allocated" [DATA]


Sujet :

SAS Base

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Points : 235
    Points
    235
    Par défaut Fonction CAT et "buffer allocated"
    Bonjour à tout le monde,

    J'ai une variable caractère au format $250. et j'aimerai lui ajouter des espaces devant comme ceci : var2 = cat('A0A0A0'x,var1);.
    Ça fonctionne d'habitude avec mes autres variables (souvent numériques), mais pas là, et j'ai le message d'avertissement suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    WARNING: In a call to the CAT function, the buffer allocated for the result was not long
             enough to contain the concatenation of all the arguments. The correct result would
             contain 253 characters, but the actual result might either be truncated to 200
             character(s) or be completely blank, depending on the calling environment. The
             following note indicates the left-most argument that caused truncation.
    J'ai cherché un peu cette erreur sur internet, mais les réponses ne semblent pas convenir à mon cas, les propositions que j'ai vu sont de passer par une PROC SQL avec un put et un format, mais je n'en ai pas.

    C'est assez handicapant car je ne peux pas avoir ma variable var2.

    Avez-vous une idée pour palier ce problème et me permettre d'avoir mon alinéa ?

    Merci beaucoup pour votre aide précieuse,

    alers

  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,

    Attention à la longueur de tes variables ...
    Avec CAT, ta nouvelle variable aura pas défaut une longueur par défaut de 200, dans la log, on t'indique que ta variable va être tronquée.

    Bon courage.

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Points : 235
    Points
    235
    Par défaut
    Bonjour et désolé que la réponse soit aussi simple que ça.

    Pourtant, je suis sûr et certain que j'avais déjà essayé cette option la semaine dernière et que ça n'avait pas réglé mon problème (j'avais sûrement mis le length au mauvais endroit). D'où mon message d'aujourd'hui.

    En tout cas merci car cela fonctionne impeccablement.

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Points : 235
    Points
    235
    Par défaut
    Ah non désolé en fait ce n'est pas ça que j'avais vérifié.

    J'ai aussi une autre syntaxe dans un macro programme : var2=cat('A0A0A0'x,put(&var.,&format.));
    En fait je suis obligé d'utiliser cette syntaxe parce que je précise un format, et pas possible de passer le format en length (ou alors je ne sais pas comment faire).

    Et là, je peux même mettre 1000 en format, ça ne marche pas.

    EDIT : Sauf que j'avais oublié que j'avais quand même mis un LENGTH dessus (c'est une variable caractère)... Donc je le passe directement à 500 dans le macro-programme.

    Bref finalement je n'ai plus de problème,

    Merci encore et désolé pour la question idiote,

    alers

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

Discussions similaires

  1. recoder la fonction cat
    Par Pitou5464 dans le forum C
    Réponses: 13
    Dernier message: 17/10/2006, 20h22

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