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

Débutez Discussion :

Rajouter des sauts de lignes en SAS


Sujet :

Débutez

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 198
    Points : 94
    Points
    94
    Par défaut Rajouter des sauts de lignes en SAS
    bonjour à tous,


    je voudrais rajouter un saut de ligne à chaque fin d'adresse.

    ADRESSE2
    ADRESSE3
    ADRESSE4
    ADRESSE5


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adresse_complete=compbl(ADRESSE2)&chr(10)!!compbl(ADRESSE3)&chr(10)!!compbl(ADRESSE4)&chr(10)+compbl(ADRESSE5);

    pouvez-vous m'aider s'il vous plait?

  2. #2
    Membre éclairé
    Homme Profil pro
    responsable adjoint service stat
    Inscrit en
    Mars 2009
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : responsable adjoint service stat
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 448
    Points : 823
    Points
    823
    Par défaut
    Tu veux rajouter le saut de ligne à quel moment ?
    Dans la variable ?
    Ou quand tu exportes l'information ? (dans l'output, via un proc print, autre ?)

  3. #3
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 198
    Points : 94
    Points
    94
    Par défaut
    re-bonjour,


    Le fichier client que je traite contient des saut de lignes au niveau de l'adresse; je dois normaliser ces adresses mais les rendre dans un même champ PR_MAILING et remettre les sauts de lignes .

    voilà ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    data aa;
    set a;
    /*** PR_MAILING ***/
    PR_MAILING=compbl(ADRESSE2_D)!!'0A'x!!compbl(ADRESSE3_D)!!'0A'x !!compbl(ADRESSE4_D)!!'0A'x!!compbl(ADRESSE5_D);
    if substr(PR_MAILING,1,1) ='0A'x   then PR_MAILING=substr(PR_MAILING,2);
    if substr(PR_MAILING,1,1) ='0A'x   then PR_MAILING=substr(PR_MAILING,2);
    if substr(PR_MAILING,1,1) ='0A'x   then PR_MAILING=substr(PR_MAILING,2);
    if substr(PR_MAILING,length(PR_MAILING)-1,1)='0A'x   then PR_MAILING1=substr(PR_MAILING,1,length(compbl(PR_MAILING)-2));
    run;
    je rajoute des sauts de lignes après chaque adresse normalisée lorsque je concatène et à chaque fois que l'adresse est vide je dois bien sûr enlever le saut de ligne.

    Mon programme ne marche pas, est ce que vous pouvez m'aider s'il vous plait?

    Je vous remercie par avance.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    Bonjour,

    pour vérifier que ton programme ne marche pas passe ta variable texte en hexadécimal.

    De mon côté ton code, quoique un peu complexe (il existe des choses plus simples), marche parfaitement....

    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
    22
    23
    24
    25
    26
    27
    28
     
    data a;
    adresse2_d="2 RUE CHARLES DE GAULLE";
    adresse3_d="RES DES FFL";
    adresse4_d="BAT VERCORS";
    adresse5_d="AA888 VILLE DES FRANCAIS LIBRES";
    run;
     
     
     
    data aa;
    set a;
    LENGTH PR_MAILING $200. ;
    /*** PR_MAILING ***/
    PR_MAILING=compbl(ADRESSE2_D)!!'0A'x!!compbl(ADRESSE3_D)!!'0A'x !!compbl(ADRESSE4_D)!!'0A'x!!compbl(ADRESSE5_D);
    if substr(PR_MAILING,1,1) ='0A'x   then PR_MAILING=substr(PR_MAILING,2);
    if substr(PR_MAILING,1,1) ='0A'x   then PR_MAILING=substr(PR_MAILING,2);
    if substr(PR_MAILING,1,1) ='0A'x   then PR_MAILING=substr(PR_MAILING,2);
    if substr(PR_MAILING,length(PR_MAILING)-1,1)='0A'x   then PR_MAILING1=substr(PR_MAILING,1,length(compbl(PR_MAILING)-2));
    run;
     
    DATA aa2; SET aa;
    PR_MAILING_HEXA=PUT(PR_MAILING,$HEX1000.);
    RUN;
     
    PROC PRINT DATA =aa2;
    VAR PR_MAILING PR_MAILING_HEXA ;
    RUN;
    PR_MAILING
    2 RUE CHARLES DE GAULLE RES DES FFL BAT VERCORS AA888 VILLE DES FRANCAIS LIBRES

    PR_MAILING_HEXA
    322052554520434841524C4553204445204741554C4C450A524553204445532046464C0A42415420564552434F52530A41413838382056494C4C4520444553204652414E43414953204C494252455320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020


    Et puis si ce que tu demande c'est de rajouter à la toute fin (non compris trailling blank) que tu veux rajouter un retour à la ligne, tu fais comme ça PR_MAILING=compbl(ADRESSE2_D)!!'0A'x!!compbl(ADRESSE3_D)!!'0A'x !!compbl(ADRESSE4_D)!!'0A'x!!compbl(ADRESSE5_D)!!'0A'x;



    Edit :

    En fait je crois avoir saisi où se situe ton problème.
    Utilise la fonction CATX elle fera très bien le "job".

    Pr_MAILING=CATX('0A'x,OF ADRESSE2_D ADRESSE3_D ADRESSE4_D ADRESSE5_D);

  5. #5
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 198
    Points : 94
    Points
    94
    Par défaut
    merci beaucoup, je ne connaissais pas cette fonction, effectivement ça aide beaucoup!!!! je teste

  6. #6
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 198
    Points : 94
    Points
    94
    Par défaut
    super ça fonctionne!


    Bonne journée!

  7. #7
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    ou encore plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Pr_MAILING=CATX('0A'x,OF ADRESSE:);
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

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

Discussions similaires

  1. [listings] lstinputlisting rajoute des sauts de ligne !
    Par poppels dans le forum Mise en forme
    Réponses: 2
    Dernier message: 17/02/2009, 18h10
  2. Bug IE si je rajoute des sauts de lignes dans le CS
    Par Invité dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 14/06/2006, 20h07
  3. [MySQL] Formulaire php + bdd = perte des sauts de ligne html ?
    Par sunshine33 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 03/10/2005, 11h19
  4. insérer des sauts de lignes en fonction du navigateur
    Par remi59 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/08/2005, 19h15
  5. remplacer des sauts de ligne par '\n'
    Par Miksimus dans le forum Général Python
    Réponses: 5
    Dernier message: 18/07/2005, 10h01

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