-
CPYTOPCD und tschechischen Sonderzeichen
Hallo zusammen,
Wiedereinmal ist in Eurem Forum (was ich selten benutze aber total gut finde) das Thema von CPYTOPCD mit tschechischen Sonderzeichen.
Wir betreiben eine AS/400 mit Relase V5R3
und dem CCSID=500.
Unser Werk in Tschechien gibt Daten mit tschechischen Sonderzeichen ein unter Client Access mit Host-Codepage=870 (Tschechisch)
Wir wollen diese Daten nun mit CPYTOPCD in ein Textfile exportieren und die Sonderzeichen werden falsch dargestellt. Auch die Verwendung einer Umsetzungstabelle (z.B. TRNTBL(*LIBL/Q500A05A5U) hat nicht funktioniert.
Deshalb meine Frage:
Was für eine Umsetzungstabelle sollte verwendet werden ?
Wie heisst die Umsetzungstabelle für ISO8859-2 oder Latin-2 ?
-
Hallo,
welche Umsetztabellen nötig sind kann ich gerade nicht sagen, aber
probiere mal die Befehele
CPYTOSTMF
CPYTOIMPF
die alten QDLS Belfehle sollte man ablösen.
Gruß
Michael
-
Wenn die Datenbank auf CCSID 500 steht, so hast du leider Pech gehabt.
Einen direkten Weg gibt es da leider nicht, da CCSID 500 und 870 nicht kompatibel sind.
Hier hilft leider nur ein Umweg über SQL:
Erstelle eine neue Tabelle mit CCSID 870.
Kopiere die Daten von der CCSID 500 per SQL und caste jedes Feld einzeln:
cast(cast(Feld as char(nn) ccsid 65535) as char(nn) ccsid 870)
insert into NeueTabelle
select cast1, cast2, ....
from AlteTabelle
Anschließend kannst du per CPYTOIMPF mit ZielCCSID 1251 die Daten ins IFS (nicht QDLS!) ausgeben.
Solltest du die Daten noch in QDLS benötigen, kannst du diese anschliessend noch mit qshell cmd('cp ...) kopieren.
Ein CPY geht leider nicht, das QDLS keine CCSID unterstützt.
-
Vielen Dank für die schnelle Antwort.
Ich habe versucht in einer Testumgebung die Schritte von Fuerchau nachzuvollziehen.
So richtig funktioniert es aber nicht.
Ich bin nicht so vertraut mit dem SQL und der "cast" Anweisung und verstehe eigentlich auch nicht, wieso einzelne Felder angesprochen werden müssen.
Kann die Umsetzung von CCSID 500 auf 870 nicht über die ganze Tabelle erfolgen ?
Bei meinem Test versuche ich die Tabelle mit CCSID 870 und dem Befehl CPYTOIMPF die Daten in das IFS zu kopieren mit folgendem Befehl:
CPYTOIMPF FROMFILE(TESTLIB/TESTFILE) +
TOSTMF('/MXX/BYYY/Test.txt') +
MBROPT(*REPLACE) STMFCODPAG(1251)
RCDDLM(*CRLF) DTAFMT(*FIXED)
Leider gibt es folgende Abruch-Nachricht:
Nachricht . . . : Zeichenumsetzung zwischen CCSID 870 und CCSID 1251
ungültig.
Ursache . . . . : Es wurde versucht, eine Zeichen- oder Grafikumsetzung für
nicht verträgliche Daten durchzuführen. Eine Umsetzung zwischen CCSID 870
und CCSID 1251 ist nicht definiert.
Ist eine CCSID 65535, ist die andere CCSID eine Grafik-CCSID. Die
Umsetzung zwischen der CCSID 65535 und einer Grafik-CCSID ist nicht definiert.
Woran kann das liegen ?
-
Entschuldigung, 1251 ist kyrillisch, 1250 ist Latin-2 passend zu 870 .
Aber wie du siehst, lehnt die AS/400 eine Konvertierung ab, wenn es nicht passt.
Man kann zwar eine FROMCCSID angeben, die gilt aber nur, wenn die Datei *HEX hat.
Da deine Quelle aber 500 ist, musst du eben per SQL erst in 870 konvertieren.
Nun zum generellen Problem:
Vom Terminal mit 870 über den Job (500 oder 65535) zur DB (500) erfolgt keine Umsetzung.
Würdest du den Job auf 870 passend zum Terminal setzen, könntest du die Datei nicht öffnen, da 500 zu 870 nicht kompatibel ist.
Somit sind die Daten in der DB als 500 markiert.
Codewandlung findet nur statt, wenn es passt und 65535 nicht im Spiel ist.
Durch dein Umkopieren und den doppelcast werden die Daten nicht gewandelt (inner Cast auf 65535) und beim Insert in die 870-Tabelle auch nicht (outer Cast von 65535 auf 870).
Somit kann der CPYTOIMPF nun von 870 in 1250 ausgeben.
In Windows mit 1252 kannst du dir die Daten dann leider nicht ansehen.
-
Hallo,
Danke für die ZusatzInfo.
Doch noch eine Frage dazu:
Kann ich aus einem DDS mit CRTPF eine Tabelle erstellen mit dem CCSID=870 ?
(Der Befehl verlangt immer eine Satzlänge RCDLEN, aber dann darf es wieder nicht eine DDS-Quelle sein)
Similar Threads
-
By Waldi2000 in forum NEWSboard Drucker
Antworten: 4
Letzter Beitrag: 11-08-06, 11:26
-
By TARASIK in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 29-06-06, 15:59
-
By y-tom in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 29-05-06, 14:31
-
By Liebhoff in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 02-11-05, 09:35
-
By Markus Gruebl in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 21-09-01, 09:24
Tags for this Thread
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