-
Da spricht der RPG-Compiler wieder anders.
Eine SRC-PF ist eine Tabelle mit CCSID wie eben auch jede andere Tabelle.
Beim Lesen durch den [Pre-]Compiler erfolgt wie immer automatisch eine Codewandlung in die Job-CCSID. Es gibt dabei sogar im Handbuch Erklärungen, wie mit unterschiedlichen CCSID's der Copy-Member umgegangen wird, wenn der Job mal auf *HEX stehen sollt (was wirklich nie der Fallsein dürfte).
Somit stehen die Konstanten nun mal im Code in der CCSID, die zum Compilezeitpunkt galt.
Dies hat mit SQL erst mal überhaupt nichts zu tun.
Embedded SQL's werden dazu noch in SQLPKG's (im Programm) abgelegt. Diese haben aber keine CCSID!
Wenn dann nun der SQL zur Laufzeit ausgeführt wird, wird der SQL selber natürlich erstmal nicht in eine andere CCSID umgewandelt.
Allerdings, und das steht auch irgendwo, werden Konstanten vom Optimizer als Parametermarker umgesetzt und die Inhalte in Variablen kopiert.
Und was soll ich dir sagen, was nun mit den Variablen passiert?
Sie werden natürlich entsprechend der Anforderung in den benötigten Code übersetzt (DB-CCSID, CCSID des XML-Dokuments).
Alles andere würde dem Prinzip CCSID der AS/400 ja vollkommen wiedersprechen.
Und wie gesagt, da kann es bzgl. des "@", ebenso auch anderen Sonderzeichen im Code, schon mal Probleme geben (auch hier im Forum schon ausgiebig diskutiert).
Übrigens: im benannten White-Book wird explizit auf das Verfahren mit der CCSID hingewiesen.
Mappings of encoding names to effective CCSIDs for stored XML data
If data that you store in an XML column is in a binary application variable, or is an internally encoded
XML type, the DB2 database manager examines the data to determine the encoding. If the data has an
encoding declaration, the database manager maps the encoding name to a CCSID.
Das Encoding im XML-Header betrifft im Übrigen nicht nur die Daten sondern das gesamte Dokument.
Inzwischen habe ichganz gute Erfahrungen damit gemacht, Konstanten in UCS2-Variablen zu speichern (gibts übrigens auch einen Thread dafür). Diese werden vom Compiler korrekt initialisiert, wenn die Job-CCSID nicht *HEX ist.
Übergibt man diese Variablen an SQL so werden diese auch bzgl. der CCSID korrekt behandelt.
Similar Threads
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 25
Letzter Beitrag: 14-02-18, 11:11
-
By Bratmaxxe in forum NEWSboard Programmierung
Antworten: 15
Letzter Beitrag: 21-12-17, 08:29
-
By KM in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 25-04-17, 09:44
-
By rischer in forum IBM i Hauptforum
Antworten: 28
Letzter Beitrag: 02-10-15, 11:36
-
By pille in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 28-11-02, 09:37
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