PDA

View Full Version : Hex-Konstante und UCS2



dschroeder
21-09-17, 12:17
Hallo,
kurze Frage: Der Compiler scheint Schwierigkeiten zu haben, Konstanten im Hex-Format mit Strings, die UCS2 sind, zusammen zu verarbeiten:


dcl-c LF const(x'000a'); //unicode utf-16
dcl-s result ucs2(10000);
pos = %scan(LF:result);

==> RNF0353: Der erste und zweite Parameter für %SCAN oder %SCANR haben
nicht dieselbe Art.


Ebenfalls in folgendem Fall habe ich Probleme. Die Funktion um_replaceAllUni erwartet alle Parameter im Format "varucs2":


dcl-c LF const(x'000a'); //unicode utf-16
dcl-c CR const(x'000d'); //unicode utf-16
result = um_replaceAllUni(CR:LF:wrapped);
==> RNF0660: Implizite Zeichenfolgeumsetzung wird für hexadezimale
Literale nicht unterstützt.


Muss ich wirklich bei jedem Literal eine Konvertierung mit %UCS2 durchführen?

Dieter

Fuerchau
21-09-17, 12:47
Ich meine, eine Unicodekonstante kann mit u'xxyy' angegeben werden.

BenderD
21-09-17, 13:03
... das x'000a' sind 2 Zeichen normale char
folgendes geht bei mir:
D $ S 1C inz(u'0024')
das ist dann ein Zeichen Unicode

D*B

dschroeder
21-09-17, 13:03
Perfekt! Darauf muss man erstmal kommen.
Vielen Dank.

dschroeder
21-09-17, 13:05
Zur Klarstellung, da die Antwort von d*b zeitgleich mit meiner gekommen ist: Das mit der Variable funktioniert auch. Aber die Lösung von Baldur ist genau die, die ich suchte: anstatt x' ein u'
.

BenderD
21-09-17, 13:21
... die Variablendarstellung ist defensiver, die hätte bei der Initialisierung mit x'0024' geknallt (Implizite Zeichenfolgeumsetzung wird für hexadezimale Literale nicht unterstützt')

D*B

dschroeder
21-09-17, 15:13
... die Variablendarstellung ist defensiver, die hätte bei der Initialisierung mit x'0024' geknallt (Implizite Zeichenfolgeumsetzung wird für hexadezimale Literale nicht unterstützt')
D*B
So wie es aussieht, kann man gar keine x' Werte in UCS2-Variablen schieben. Man muss u' nehmen, so wie Baldur es schreibt. Ich möchte in meinem Programm auch gar keine große HEXerei einbauen. Mit geht es nur um die Steuerzeichen LF und CR. Da klappt das mit der Konstantendefinition ganz gut.
Nochmals vielen Dank an Euch beide.

Fuerchau
21-09-17, 15:14
Wenn es denn nicht den kleinen Unterschied gäbe: Eine Variable ist kein Konstante.

BenderD
21-09-17, 15:36
... der Murks in RPG ist halt, dass man Konstanten keinen expliziten Typ geben kann, was keineswegs Nebenwirkungsfrei ist: Auswirkungen auf Rechenregeln, Aufruf von überladenen SQL Procedures, ...