PDA

View Full Version : cpyfrmpcd mit Umlauten



jimknopf99
27-01-15, 07:16
Hallo Forum,

mir fehlt zu diesem alten Problem eine praktikable Lösung. Ich habe im QDLS eine xml-Datei die ich per cpyfrmpcd mit Tabelle QA5U697273 auf die AS bringe. Hier sind die Umlaute in nicht lesbare Zeichen umgesetzt. Ich habe das ganze auch schon in eine Datei der AS mit CCSID 273 gebracht, gleiches Ergebnis. Mit einer angepassten Tabelle, die auf der o.g. basiert und für die Umlaute andere Hex-Einträge hat, komme ich auch nicht weiter. Gibt es da noch ein Hintertürchen das ich bislang nicht kenne???

prsbrc
27-01-15, 07:33
Guten Morgen.
Ein radikaler Weg wäre hier, bevor man per CPYFRMPCD kopiert, die Datei (mit Inhalt) mittels iconv (QSH) in die richtige CCSID zu konvertieren:
iconv -f quellccsid -t zielccsid quelldateiname > zieldateiname && setccsid zielccsid zieldateiname

Ob dies jedoch im QDLS so praktikabel ist müsste man probieren.

Fuerchau
27-01-15, 08:36
XML-Dateien gehören nicht ins QDLS!
Diese sollten innerhalb "/Home" abgewickelt werden.
Häufig sind diese nämlich in UTF-8 (CCSID 1208) gespeichert und müssen erst in z.B. 273 konvertiert werden.
Dazu bietet sich dann CPYFRMSTMF an.

QDLS sollte soweit es irgend geht vermieden und abgeschafft werden!

hel400
27-01-15, 11:03
QDLS sollte soweit es irgend geht vermieden und abgeschafft werden!

:) Dafür sollte es einen LIKE-Button geben :)

Btw, um die eigentliche Frage "möglicherweise" zu beantworten, versuche mal Folgendes.
Den Copy nicht mit CPYFRMPCD sondern mit:
CPYFRMSTMF FROMSTMF('QDLS/myfolder/myfile')
TOMBR('qsys.lib/mylib.lib/myfile.file/mymbr.mbr')
MBROPT(*REPLACE)
CVTDTA(*AUTO)
STMFCCSID(*STMF) oder (*PCASCII)
DBFCCSID(*FILE)
STMFCODPAG(*STMF) oder (*PCASCII)


Mit den Parametern STMFCCSID und STMFCODPAG (und evtl. DBFCCSID) musst Du "experimentieren".

Beim umgekehrten Weg (also mit CPYTOSTMF) werden durch STMFCODPAG(*PCASCII oder *STDASCII) die Umlaute nämlich richtig aufbereitet!)

Fuerchau
27-01-15, 12:28
Genau da setzt aber das Problem an.
Von/auf QDLS lässt sich nur binär kopieren, da keine CCSID unterstützt wird.
Dafür kann man ja mittels Codetabellen CPYxxxPCD verwenden.
Bei UTF-8 o.ä. scheitert das ganz aber.
(Ist z.B. auch beim QNTC so).
Die Datei ist also in ein "/Home"-Verzeichnis zu bringen, dann klappts auch mit CPYxxxSTMF und für anderes auch CPYxxxIMPF.