Annonce

Bienvenue sur le site support de mes ouvrages d'introduction à SAS

La 4ème édition de mon ouvrage est toujours disponible !

Où trouver cet ouvrage ?


#1 14-02-2018 10:51:25

SAS-SR
Administrateur
Lieu: Université d'Orléans
Date d'inscription: 01-09-2008
Site web

[archive] SAS University Edition et le signe €

Les utilisateurs de SAS University Edition (SAS UE) ont un petit problème et nous allons tenter de le résoudre.

J'ai pas mal râlé à ce sujet dans la section dédiée à SAS UE : le codage par défaut avec SAS UE, c'est de l'UTF-8 (alors qu'avec un SAS "standard", c'est du WLATIN1) - il est impossible de modifier cela avec SAS UE.

Le codage ? c'est quoi ?

Les caractères que vous voyez dans les modalités de vos variables caractères sont, en réalité, une suite de 0 et de 1. Quand par exemple, vous voyez un A majuscule, en réalité, ce qui est stocké dans l'octet correspondant à ce A, c'est 01000001.

Le codage, c'est un fait une norme qui permet la transformation d'un caractère en une suite de 0 et de 1.

Le codage WLATIN (en fait Windows-1252 aussi appelé codage ANSI) est un codage SBCS (Single-Byte Character Set) : les caractères sont systématiquement enregistrés sur un octet. Bien entendu, avec 8 0/1, le nombre de caractères différents que vous allez pouvoir codé est limité : 2 puissance 8 = 256.

En fait, vous n'avez même pas 256 caractères possibles puisque certaines "combinaisons" sont réservés à des caractères de contrôle (comme la tabulation par exemple...). Si votre codage est la WLATIN1 et si vous tentez de faire entrer un caractère non géré par cette norme de codage, vous aurez un joli "?"

vous souhaitez un exemple ?

voici quelques idéogrammes japonnais (pris au hasard sur www.yahoo.co.jp) que l'on va tenter de faire entrer dans une variable caractère avec SAS lorsque le codage est WLATIN1 :

Code:

data test;
input texte $256. ;
cards;
警察犬が銃発見 組幹部
;run;

et voici le résultat :
http://www.sas-sr.com/img/jap.png

Évidemment, ce n'est pas très utile...

Prenez ce même programme et exécutez le avec SAS UE (norme de codage UTF-8), vous obtiendrez :

http://www.sas-sr.com/img/utfsue.png

Il existe donc d'autres normes de codage (comme l'UTF-8) qui vont vous permettre de coder un nombre nettement plus important de caractères.

Mais ce codage en UTF8 n'est pas sans poser quelques difficultés.. ainsi, l'INFORMAT EURO. ne fonctionnera pas si votre codage est UTF8 (et donc avec SAS UE).

La raison ? c'est très certainement dû au fait qu'en UTF-8, il faut 3 octets pour coder le signe € alors qu'avec un codage WLATIN1, il n'est faut qu'un.

Si vous disposez de SAS UE, tentez d'exécuter ce programme :

Code:

data test;
input x :euro. y;
cards;
€1 1
€2 2
€123.45 3
€1234.56 4
;

et vous verrez que ça ne marche pas...

Alors, puisque l'INFORMAT EUROw.d ne fonctionne pas avec SAS UE, comment faire pour malgré tout disposer dans la table TEST d'une variable numérique qui aura pour modalité 1, 2, 123.45 et 1234.56 ?

Même si vous ne disposez pas de SAS UE, amusez vous quand même avec ce petit exercice (très simple en réalité)...

à la semaine prochaine

Ce sujet est maintenant archivé - seuls les utilisateurs inscrits de www.sas-sr.com peuvent consulter l'intégralité du sujet et les réponses aux questions posées.
pour vous identifier, suivez ce lien
pour vous inscrire, suivez ce lien

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr
Flux RSS