Le programme illustre l'utilisation de la fonction KCVT pour convertir des chaînes hexadécimales en caractères UTF-8. Il crée un jeu de données à partir de SASHELP.CLASS, en remplaçant certaines valeurs par des caractères spéciaux (japonais, kannada) et des symboles. Il définit ensuite un format personnalisé et un modèle de graphique (PROC TEMPLATE) pour afficher ces données. Finalement, PROC SGRENDER est utilisé pour générer le graphique qui affiche les données avec les caractères Unicode.
Analyse des données
Type : MIXTE
Le script lit les 6 premières observations de la table SASHELP.CLASS. Il modifie ensuite les variables 'name' et 'sex' pour y insérer des caractères et symboles Unicode, créant ainsi une nouvelle table de travail 'uni'.
1 Bloc de code
DATA STEP
Explication : Ce bloc utilise un DATA STEP _null_ et la fonction KCVT pour convertir des représentations hexadécimales de caractères Unicode (lettres grecques) en chaînes de caractères encodées en UTF-8. Ces chaînes sont ensuite stockées dans des variables macro (ulabel, udf_v1, udf_v2) pour une utilisation ultérieure.
Explication : Ce DATA STEP crée la table 'uni' en lisant 6 lignes de sashelp.class. Il assigne un libellé Unicode à la variable 'age' et modifie les variables 'name' et 'sex' pour y insérer des caractères Katakana, Kannada et des symboles de genre Unicode, démontrant la gestion de données multilingues.
Copié !
data uni;
attrib age label="&ulabel"; /* Data set label in utf-8 */
attrib sex length=$4; /* NOTE: These are byte lengths: not char lengths */
attrib name length=$32;
set sashelp.class(obs=6);
if _n_ = 2 then /* Alice in Katakana: already utf-8 HEX values */
name='E382A2E383AAE382B9'x;
if _n_ = 4 then /* Carol in Kannada: utf-8 literals directly typed in editor */
name= 'ಕರೂಲ್' ;
sex = ifc(sex='M', kcvt('2642'x, 'u16b', 'utf8'),
kcvt('2640'x, 'u16b', 'utf8')); /* NOTE: short encoding names */
run;
1
DATA uni;
2
attrib age label="&ulabel"; /* Data set label in utf-8 */
3
attrib sex LENGTH=$4; /* NOTE: These are byte lengths: not char lengths */
4
attrib name LENGTH=$32;
5
SET sashelp.class(obs=6);
6
IF _n_ = 2THEN/* Alice in Katakana: already utf-8 HEX values */
7
name='E382A2E383AAE382B9'x;
8
IF _n_ = 4THEN/* Carol in Kannada: utf-8 literals directly typed in editor */
9
name= 'ಕರೂಲ್' ;
10
sex = ifc(sex='M', kcvt('2642'x, 'u16b', 'utf8'),
11
kcvt('2640'x, 'u16b', 'utf8')); /* NOTE: short encoding names */
12
RUN;
3 Bloc de code
PROC FORMAT
Explication : Cette procédure définit un format personnalisé `utf8_udf`. Ce format mappe les valeurs numériques 12 et 13 aux chaînes de caractères Unicode (lettres grecques) stockées précédemment dans les variables macro. Les autres valeurs sont affichées avec un format standard.
Explication : La procédure TEMPLATE définit un modèle de graphique statistique personnalisé nommé `uni_utf8`. Ce modèle crée un nuage de points (scatterPlot) et est configuré pour afficher les valeurs de la variable 'name' comme étiquettes de données, en utilisant une police compatible Unicode.
Explication : Ce bloc final utilise la procédure SGRENDER pour générer un graphique à partir du modèle `uni_utf8` et du jeu de données `uni`. Le format `utf8_udf` est appliqué à la variable 'age' pour afficher les caractères grecs correspondants. L'instruction `ods graphics` réinitialise les paramètres graphiques.
Copié !
ods graphics / reset;
proc sgrender template=uni_utf8 data=uni;
format age utf8_udf10.;
run;
1
ods graphics / reset;
2
PROC SGRENDER template=uni_utf8 DATA=uni;
3
FORMAT age utf8_udf10.;
4
RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.