Das Programm veranschaulicht die Verwendung der KCVT-Funktion zur Konvertierung von Hexadezimalzeichenfolgen in UTF-8-Zeichen. Es erstellt einen Datensatz aus SASHELP.CLASS, indem es einige Werte durch Sonderzeichen (Japanisch, Kannada) und Symbole ersetzt. Anschließend definiert es ein benutzerdefiniertes Format und eine Grafikvorlage (PROC TEMPLATE), um diese Daten anzuzeigen. Schließlich wird PROC SGRENDER verwendet, um die Grafik zu generieren, die die Daten mit den Unicode-Zeichen anzeigt.
Datenanalyse
Type : MIXTE
Das Skript liest die ersten 6 Beobachtungen der SASHELP.CLASS-Tabelle. Anschließend ändert es die Variablen 'name' und 'sex', um Unicode-Zeichen und -Symbole einzufügen, wodurch eine neue Arbeitstabelle 'uni' erstellt wird.
1 Codeblock
DATA STEP
Erklärung : Dieser Block verwendet einen DATA STEP _null_ und die KCVT-Funktion, um hexadezimale Darstellungen von Unicode-Zeichen (griechische Buchstaben) in UTF-8-kodierte Zeichenfolgen zu konvertieren. Diese Zeichenfolgen werden dann in Makrovariablen (ulabel, udf_v1, udf_v2) zur späteren Verwendung gespeichert.
Erklärung : Dieser DATA STEP erstellt die Tabelle 'uni', indem er 6 Zeilen aus sashelp.class liest. Er weist der Variablen 'age' eine Unicode-Beschriftung zu und ändert die Variablen 'name' und 'sex', um Katakana-, Kannada-Zeichen und Unicode-Geschlechtssymbole einzufügen, was die Verwaltung mehrsprachiger Daten demonstriert.
Kopiert!
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 Codeblock
PROC FORMAT
Erklärung : Diese Prozedur definiert ein benutzerdefiniertes Format `utf8_udf`. Dieses Format ordnet die numerischen Werte 12 und 13 den Unicode-Zeichenfolgen (griechische Buchstaben) zu, die zuvor in den Makrovariablen gespeichert wurden. Andere Werte werden mit einem Standardformat angezeigt.
Erklärung : Die TEMPLATE-Prozedur definiert eine benutzerdefinierte statistische Grafikvorlage namens `uni_utf8`. Diese Vorlage erstellt ein Streudiagramm und ist so konfiguriert, dass die Werte der Variablen 'name' als Datenbeschriftungen unter Verwendung einer Unicode-kompatiblen Schriftart angezeigt werden.
Erklärung : Dieser letzte Block verwendet die SGRENDER-Prozedur, um eine Grafik aus der Vorlage `uni_utf8` und dem Datensatz `uni` zu generieren. Das Format `utf8_udf` wird auf die Variable 'age' angewendet, um die entsprechenden griechischen Zeichen anzuzeigen. Die Anweisung `ods graphics` setzt die Grafikparameter zurück.
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.