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 18/11/2008, 10h12   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2008
Messages : 19
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 19
Points : 10
Points : 10
Par défaut Etape DATA et format

Bonjour,

J'ai un fichier num.txt qui contient

Quand j'exécute ce code :

Code :
1
2
3
4
5
DATA test;
INFILE 'C:\temp\num.txt';
format test 32.;
input test ;
run;
J'obtiens
dans ma table test.
Si quelqu'un sait pourquoi ? et comment obtenir 11000000001977959

Merci d'avance.
_celine_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2008, 12h06   #2
Membre confirmé
 
Inscription : avril 2008
Messages : 233
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : avril 2008
Messages : 233
Points : 216
Points : 216
Le stockage des entiers sous SAS se fait dans un nombre limité des octets, maximum que tu peux avoir c'est 8 octets. Ces octets sont utilisés soit en IEEE standard (Windows, UNIX), soit en IBM mainframe standard (Open VMS, Alpha). Je suppose qu'il s'agit de Windows ou UNIX, laissons tomber le format IBM.

Format IEEE utilise 8 octets (64 bits) de manière suivante : 1 bits pour le signe, 11 bits pour l'exposant, 52 bits pour la mantisse. Pour rappel :
Code :
Nombre = Signe Mantissa * (10 ^ Exposant)
Donc, la plus grande mantisse que tu peux avoir sans arrondir est 2^52, ce qui est un tout petit peu moins que ton nombre.

Par contre, il y a toujours des solutions. Est-ce que tu veux vraiment traiter ce nombre en tant qu'un numéro ? Est-ce que c'est pas par hasard plusieurs numéros collés l'un derrière l'autre ? Dans le premier cas je te conseillerais soit d'utiliser les chaînes de caractères au lieu des nombres (il faudra implémenter toute l'arithmétique bien sûr), soit abandonner SAS pour des outils mieux adaptés. Dans le deuxième cas - divise les nombres au moment de la lecture du fichier.
green_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2008, 12h50   #3
Candidat au titre de Membre du Club
 
Inscription : mars 2008
Messages : 19
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 19
Points : 10
Points : 10
Merci pour cette explication.
Je vais prendre l'option caractère

Code :
1
2
3
4
5
DATA test;
INFILE 'C:\temp\num.txt';
format test $2.;
input test ;
run;
_celine_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h52.


 
 
 
 
Partenaires

Hébergement Web