PDA

View Full Version : CPYTOIMPF und CCSIDS der ewige Kampf ;-)



MGJ79
10-12-10, 15:18
So nachdem ich mich gerade abgeplagt habe nur zum Verständnis, da ich sehe das das Theme CPYTOIMPF hier gerne zu "Tragödien" führt. Natürlich ist jeder herzlich eingeladen Ergänzungen hinzuzufügen bzw. mich zu korrigieren sollte ich Mist schreiben.

1) Wenn man eine Datei kopiert so hat die immer eine CCSID z.b. PC Datei 819.
Genauso wie jede Datenbankdatei (dspfd dbxy). Damit erkennt das System wie die Daten codiert sind.
(Beisiel: '123'
=> Hex-Ascii 313233
=> Hex-EBCDIC = F1F2F3 )

2) Sollte jetzt eine Tabelle / Datei die CCSID 65535 = HEX haben so kann die Maschine den Inhalt nicht korrekt umwandeln. Wie denn auch HEX bleibt HEX...(nen F1F2F3 bleibt ein F1F2F3 ja auch bei Windows ;-) )

In meinen Fall wurde eine ASCII-Datei auf eine DB-Datei (CCSID = 65535) importet. Was natürlich zur Folge hat das hier keine Umsetzung erfolgen kann ...Hex bleibt Hex.. und in der DB Schrottdaten drinnenstanden(erkennt man an den bunten lustigen Zeichen in ner SQL-Abfrage :eek: ).

F: Wie setzt er richtig ASCII->EBCDIC um??
A: Datenbankdatei die richtige CCSID zb. 500 = LATIN oder 273 Deutschland vergeben dann passt es(EBCDIC Group 1 ectl..) bzw. wenn möglich mit chgpf die CCSID ändern oder DBTabelle neu erstellen.


Übersicht über alle CCSIDS siehe hier (http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=%2Fdb2%2Frbafzmstsidvals.htm).


Rechtschreibfehler sind gewollt und dienen der Belustigung.

Fuerchau
10-12-10, 15:33
Nun, bei den CCSID's im IFS ist etwas Vorsicht walten zu lassen.
Erstellst du von der AS/400 aus Dateien im IFS kannst du die korrekte CCSID für die IFS-Datei vorgeben.
Kommen aber Dateien z.B. über den Netserver (Netzfreigaben) rein, erhalten diese eine Default-CCSID, die im Netserver eingstellt ist.
Dies muss aber für die Daten eben genau passen.
Steht im Netserver z.B. 819, passt das für Windows 1252 eben nicht.
Du musst dann für die STMF die passende CCSID beim Import selber vorgeben.

Über Windows können z.B. auch UTF-8-Dateien reinkommen. Die CCSID wäre 1208, die Datei hat aber den Default aus dem Netserver.

BenderD
10-12-10, 15:58
... eine Ergänzung noch bezüglich Datenbankdatei:

Angabe von CCSID auf Feldebene ist am stabilsten und vorzuziehen.

D*B


So nachdem ich mich gerade abgeplagt habe nur zum Verständnis, da ich sehe das das Theme CPYTOIMPF hier gerne zu "Tragödien" führt. Natürlich ist jeder herzlich eingeladen Ergänzungen hinzuzufügen bzw. mich zu korrigieren sollte ich Mist schreiben.

1) Wenn man eine Datei kopiert so hat die immer eine CCSID z.b. PC Datei 819.
Genauso wie jede Datenbankdatei (dspfd dbxy). Damit erkennt das System wie die Daten codiert sind.
(Beisiel: '123'
=> Hex-Ascii 313233
=> Hex-EBCDIC = F1F2F3 )

2) Sollte jetzt eine Tabelle / Datei die CCSID 65535 = HEX haben so kann die Maschine den Inhalt nicht korrekt umwandeln. Wie denn auch HEX bleibt HEX...(nen F1F2F3 bleibt ein F1F2F3 ja auch bei Windows ;-) )

In meinen Fall wurde eine ASCII-Datei auf eine DB-Datei (CCSID = 65535) importet. Was natürlich zur Folge hat das hier keine Umsetzung erfolgen kann ...Hex bleibt Hex.. und in der DB Schrottdaten drinnenstanden(erkennt man an den bunten lustigen Zeichen in ner SQL-Abfrage :eek: ).

F: Wie setzt er richtig ASCII->EBCDIC um??
A: Datenbankdatei die richtige CCSID zb. 500 = LATIN oder 273 Deutschland vergeben dann passt es(EBCDIC Group 1 ectl..) bzw. wenn möglich mit chgpf die CCSID ändern oder DBTabelle neu erstellen.


Übersicht über alle CCSIDS siehe hier (http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=%2Fdb2%2Frbafzmstsidvals.htm).


Rechtschreibfehler sind gewollt und dienen der Belustigung.