-
Korrekt. Wobei inzwischen %char() und %ucs2() weitgehend überflüssig sind, da die Runtime inzwischen so intelligent ist, dass sie das automatisiert.
Was UTF8 angeht, so musst du hier theoretisch die 4-fache mögliche Zeichenkapazität berücksichtigen, wobei 2-fach ausreicht, ein Ü belegt 2 Bytes, in ein 30-stelliges Feld bekommst du dann nur 15 Ü's. Gespart hast du da nichts. Deshalb NCHAR, das ist generell 2 Bytes je Char.
Außerdem:
Mach mal mit SQL ein Select auf ein UTF8-Feld, DSPPFM u.ä. Dies betrifft also nicht nur RPG sondern alle Zugriffe incl. ODBC/JDBC. Alleine um einen Substring bzw. %subst() korrekt durchzuführen musst du das Feld erst mal in UCS2 wandeln, da Umlaute ja die Zeichenposition bereits verschieben.
-
ok ich hab das bei mir jetzt mal getestet und die Felder in einer Tabelle von VarChar zu nVarChar geändert.
Bin positiv überrascht das dieses ohne Datenverlust funktionierte
habe beim RPG jetzt nur wie du beschrieben hast ein Problem beim %Trim und %SubStr
Das ist jetzt ein bisschen gewöhnungsbedürftig
%trimr(FELD:%ucs2('/'))
Aber vielleicht lässt die IBM hier dann auch mal eine schlaue Konvertierung von Konstanten zu
-
dcl-s SchraegStrich ucs2(1) inz(%ucs2('/'));
%trimr(FELD:SchraegStrich)
Das Problem ist doch, dass in der Quelle das Zeichen "/" in EBCDIC angegeben ist, du aber UCS2 benötigst. Dies geht halt dann nur mit Cast oder eigenen Konstanten.
Da aber Unicode keine weitere Codewandlung erfährt, kannst du Konstanten auch in der u-Notation schreiben:
%trimr(FELD:u'002F') // x'2F' = "/"
Übrigens: Für die U-Notation hilft dir die Windows "Zeichentabelle".
Wählst du ein Zeichen aus, wird dir in der Fußzeile die u-Notation angezeigt.
Wenn du das mit dem %ucs2 lässtig findest, kannst du ja auch SQL nehmen;-):
exec sql set : Ziel = trim(trailing '/' from : Quelle);
-
das mit der U-Notation kenn ich werde auch mal überlegen für die Konstanten dann einen Include Quelle anzulegen.
um den Code dafür raus zu finden nutzte ich sehr gerne diese Seite
https://unicode-table.com/de/
Wie definiere ich denn dann am Besten CLOB und BLOB?
Ohne Angabe von CCSID oder dann mit 1200?
-
Wenn du unicode im clob speichern willst, solltest du den clob im Programm als dbclob (Double Byte Clob) mit ccsid(1200) definieren.
Ob es noch eine andere Lösung gibt, weiß ich nicht.
-
Näheres siehe hier:
https://www.ibm.com/docs/en/i/7.2?to...-default-ccsid
the CCSID for DBCLOB will be 1200.
Allerdings lohnt sich hier eine Redefinition einer DBCLOB-Variable, da diese als DS definiert und in ILERPG schwer zu handhaben ist:
dcl-ds mydbclobds;
wrkDBCLOB sql_type(DBCLOB:16000K);
wrkDBChar ucs2(8000000) varying pos(1);
end-ds;
Varying-Felder werden native unterstützt während das DBCLOB umdefiniert wird:
The following declaration in fixed-form:
D MYCLOB S SQLTYPE(DBCLOB:1000)
results in the generation of the following structure:
D MYCLOB DS
D MYCLOB_LEN 10U
D MYCLOB_DATA 1000C
Da ist das Ansprechen halt etwas zeitaufwändiger und RDI kennt die Auflösung ja nicht.
Durch die Üerlagerungsdefinition kann man wieder vernünftig mit dem Feld arbeiten.
16000K ist übrigens die Maximalgröße da eine DS max. 16 MB groß sein kann, allerdings die Längeninformation noch dazu kommt, so dass 8M nicht geht.
Similar Threads
-
By malzusrex in forum NEWSboard Programmierung
Antworten: 18
Letzter Beitrag: 22-01-20, 09:46
-
By loisl in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 23-05-16, 15:23
-
By DEVJO in forum NEWSboard Programmierung
Antworten: 12
Letzter Beitrag: 29-09-15, 14:07
-
By Toschie in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 15-01-15, 11:26
-
By karin-vogelmann in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 21-03-03, 12:39
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks