Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/12/2010, 17h08   #1
Invité de passage
 
Inscription : novembre 2009
Messages : 13
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 13
Points : 1
Points : 1
Par défaut problème format informat

bonjour,
pour lire une date enregistrée sur un fichier texte sous la forme yyyymmdd
j'ai appliqué un informat yymmdd8.
Puis je voudrais afficher au format dd/mm/yyyy donc j'ai appliqué un format ddmmyy10.
sauf que la table est crée la variable est déclarée comme numérique avec le bon format et informat mais il dit qu'il ya un problème avec le format
ce qui m'inquiète c'est que quand je ne met pas de format il affiche comme mm 20021012 et pas un nombre de jour
Code :
1
2
3
 
ATTRIB DSICB  
label='Date de première diffusion'   format=ddmmyy10.   informat=yymmdd8.;
Est ce que vous avez une solution?
merci
chiraz01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 17h17   #2
Membre expérimenté
 
Inscription : avril 2009
Messages : 537
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 537
Points : 540
Points : 540
Salut,

montre nous ce que tu as dans DSICB
xav
xav2229 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 17h30   #3
Invité de passage
 
Inscription : novembre 2009
Messages : 13
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 13
Points : 1
Points : 1
20021118
20030421
20080616
20080616
20030120
20070115
20070115
20030404
20060619
20060619
chiraz01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 18h03   #4
Membre expérimenté
 
Inscription : avril 2009
Messages : 537
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 537
Points : 540
Points : 540
donc ce n'est pas une date SAS.

Une date SAS est un nombre de jours depuis le 01/01/1960.

20 021 118 jours cela fait pas mal depuis 1960 : vers l'an 54 000 et des brouettes...

xav
xav2229 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/12/2010, 18h35   #5
Invité de passage
 
Inscription : novembre 2009
Messages : 13
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 13
Points : 1
Points : 1
justement je sais comment sas considère la date
et dans mon message je dis que ma date a été enregistrée par celui qui a composé le fichier txt sous la forme de yyyymmdd
et c'est pour ça que j'applique l'informat
après je dis aussi dans le message du début que ce qui m'inquiète c'est que sas ne la lis pas comme date c'est à dire comme nombre de jours
chiraz01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 11h36   #6
Membre expérimenté
 
Inscription : avril 2009
Messages : 537
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 537
Points : 540
Points : 540
tu as donc mal appliqué l'informat,

il faut que tu post ton code de lecture du fichier qui doit être incorrect.

xav
xav2229 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 12h03   #7
Invité de passage
 
Inscription : novembre 2009
Messages : 13
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 13
Points : 1
Points : 1
Donc c'est l'informat yymmdd8. qui n'est pas bon ?
Est ce que tu as une idée sur le bon informat que je dois utiliser pour lire
une date stockée sous la forme 20021118:yyyymmdd?
chiraz01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 12h15   #8
Membre expérimenté
 
Inscription : avril 2009
Messages : 537
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 537
Points : 540
Points : 540
si mais tu l'as mal appliqué :

Code :
1
2
3
4
5
6
7
8
9
DATA _NULL_;
   attrib dateN informat=yymmdd.;
   input dateC : $
      @1 dateN ;
   put dateC = / dateN= / dateN= ddmmyy10.;
   cards;
20080616
;
run;
log :
Code :
1
2
3
4
 
dateC=20080616
dateN=17699
dateN=16/06/2008
xav
xav2229 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 15h51   #9
Invité de passage
 
Inscription : novembre 2009
Messages : 13
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 13
Points : 1
Points : 1
Voici mon code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  DATA &libIn..EMV_CLE_PUBLIQUE ;
 
 
     ATTRIB DDEBUT      label='Date de mise en service'                                              format=ddmmyy10.  informat=yymmdd.;
     ATTRIB DDRETRAIT   label='Date de début de retrait'                                             format=ddmmyy10. informat=yymmdd.;
     ATTRIB DFRETRAIT   label='Date de fin de retrait'                                               format=ddmmyy10. informat=yymmdd8.;
     ATTRIB DSICB       label='Date de première diffusion'                                           format=ddmmyy10. informat=yymmdd.;
 
     ATTRIB DMAJ        label='Date de dernière mise à jour'                                         format=ddmmyy10. informat=yymmdd.;
 
     INFILE "/DATA/EMV/DATA/FIC/CLE_PUBLIQUE_EMV_1012.txt " FIRSTOBS=2 OBS=11 TRUNCOVER  LRECL=769;
     INPUT   DDEBUT  554-561 DDRETRAIT 562-569 DFRETRAIT 570-577 DSICB 578-585   DMAJ  630-637   ;
 RUN;
 
 proc print; run;
et j'obtient un résultat pas bon
Code :
1
2
3
4
 
    DDEBUT   DDRETRAIT   DFRETRAIT       DSICB            DMAJ
 
 **********  **********  **********  **********        **********
c'est quoi la raison ?
J'ai l'mpression d'appliquer la mm chose pourtant
chiraz01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 17h03   #10
Membre expérimenté
 
Inscription : avril 2009
Messages : 537
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 537
Points : 540
Points : 540
Alors un peu de doc...

Tu utilises la méthode de lecture :
Citation:
Envoyé par SASDOC
Column Input
Les pré-requis de cette méthode sont:
Citation:
Envoyé par SASDOC
To read with column input, data values must be in
  • the same columns in all the input data records
  • standard numeric form or character form
Cela s'annonce donc mal de lire des dates : ce ne sont pas des données standart

Quand on regarde l'informat on voit que la méthode Column Input ignore l'informat.
Citation:
Envoyé par SASDOC
If you have coded the INPUT statement to use another style of input, such as formatted input or column input, that style of input is not used when you use the INFORMAT statement.
Donc il faut utiliser une autre méthode de lecture:
Citation:
Envoyé par SASDOC
INPUT Statement, Formatted
Reads input values with specified informats and assigns them to the corresponding SAS variables
c'est ici
xav
xav2229 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h49.


 
 
 
 
Partenaires

Hébergement Web