PDA

View Full Version : Codepage / CCSID, CPYFRMSTMF



ILEMax
03-05-12, 10:41
Hallo,

ich bekomme beim CPYFRMSTMF plötzlich den Fehler

Weitere Nachrichteninformationen

Nachrichten-ID . . . . : CPFA0A2 Bewertung . . . . . . : 40
Nachrichtenart . . . . : Diagnose
Sendedatum . . . . . . : 03.05.12 Sendezeit . . . . . . : 11:16:27

Nachricht . . . : Zu dieser Operation übertragene Informationen sind
ungültig.
Ursache . . . . : Mögliche Ursachen:
-- Die Operation konnte die an sie übertragenen Daten nicht benutzen.
-- Möglicherweise ist ein Name falsch.
-- Statt des Verzeichnisses wurde eine Datei angegeben.
-- Statt der Datei wurde ein Verzeichnis angegeben.
-- Die gewünschte Funktion wird vom Dateisystem nicht unterstützt.
Fehlerbeseitigung: Anhand der Eingabedaten die Ursache des Problems
feststellen. Den Fehler korrigieren und die Operation wiederholen.
Technische Beschreibung . . . . . . . : Wurde eine Operation an einem
benutzerdefinierten Dateisystem (UDFS) versucht, war möglicherweise der NameDer Ablauf ist schon seit Jahren stabil. Auch der Daten Lieferant hat nix geändert.

Seltsam ist, das die Datei mit STMFCODEPAGE(1208) im CL kopiert werden soll. Die CCSID der Datei ist aber 1252.
Wir bekommen täglich 15 -20 solcher Dateien, anscheinend alle mit CCSID 1252. nun ist da eine dabei, die nicht geht. Mache ich den CPY ohne Codepage geht es.

Wie hängen CODEPAGE und CCSID aneinander?
Kopiert wird von einer Win freigabe.
Der ILEMax

Fuerchau
03-05-12, 11:07
Codepage und CCSID sind nur unterschiedliche Begriffe des selben Sachverhalts.

Dateien, die extern ins IFS gestellt werden erhalten ihre CCSID automatisch
a) durch den Default im Netserver
b) durch FTP-Attribute bzw. FTP-Befehle beim FTP-Transfer

Diese Codepage hat dann aber auch garnichts mit dem tatsächlichen Inhalt zu tun sondern dient nur der Annahme, dass der Inhalt dieser Codepage entspricht.
Bei den entsprechenden CPY-Befehlen kann dann auf diese Codepage verwiesen werden.
Ein CHGATR auf eine andere CCSID setzt nur das Flag für das Objekt, ändert die Daten aber grundsätzlich nicht.

Die Codepage 1208 entspricht nun der Codierung UTF-8, d.h., dass Daten zwischen 1-4 Byte je Zeichen gespeichert sein können.
Sind die Daten allerdings nicht tatsächlich UTF-8, kommt es zu Konvertierungsfehlern und ggf. Abbrüchen.

Beispiel:
Sind alle Daten für die Konvertierung im normalen ASCII-Bereich (0-9, A-Z, a-z, ein paar Sonderzeichen) gibt es zwischen 1208 und 1252 keinen Unterschied.
Aber für das Zeichen "Ü" müssen dann 2 Byte verwendet werden.
Ist das Zeichen "Ü" aber direkt als 1 Byte gespeichert, entspricht es nicht den UTF-8-Bestimmungen und es kommt zum Fehler.
M.a.W.: der Inhalt der Datei ist nicht UTF-8 sondern eben ANSI 1252.

Schau Dir die Daten mal per EDTF bzw. WRKLNK und Auswahl 5 an, ob tatsächlich Sonderzeichen (Umlaute) als Klartext zu sehen sind.

ILEMax
03-05-12, 13:40
Danke,
Codepage = CCSID ?

Meine Kollegin besteiotet das wehement! (kann's aber nicht erklähren, verweist auf eine englisches Wikipedia) ...

Wenn ich die Datei mit wrklnk betrachte habe ich alle Umlaute drin. Klar lesbar.

Wir haben vom Datenlieferanten die datei neu eingefordert ... nun ist Sie verarbeitbar. Ich kann keinen Unterschied feststellen

Problem ist also entweder verschoben auf die nächste solch-artige Datei oder erledigt

Thx
Der ILEMax

Fuerchau
03-05-12, 14:15
Nochmal Codepage und CCSID ist ein und das selbe.
Codepage kommt ursprünglich aus der DOS und somit nun Windows/Unixwelt.
CCSID kommt aus der IBM-Welt.

Coded Character Set Identification!

Im IFS bezeichnet die IBM das halt mal als Codepage (STMF's) oder auch als CCSID bei z.B. CHGATR.

Der Begriff Codepage kommt aus DOS halt daher, dass es eine PAGE im Speicher gibt, die den CODE eben umwandelt.
Im Wesentlichen diente die Umwandlung zwischen der Tastatur und dem internen Zeichensatz sowie wiederum der Grafikausgabe.

Genauso dient die CCSID eben der Umwandlung zwischen Datenbank, Job und Device.
In der CA-Sitzung heißt es ja auch wieder Hostcodepage und in der Dropdownliste findest du die möglichen CCSID's.

Zum Überfluss gibt es dann noch die CHRID, die dann beim Device (Bildschirm/Drucker) allerdings wieder der Codepage bzw. CCSID entspricht.

jgv
03-05-12, 15:25
Hello

Vielleicht helfen diese Erklärungen von Bruce Vining. Sie sind allerdings auf Englisch:

http://www.think400.dk/files/Whats_with_these_ASCII_EBCDIC_Unicode_CCSIDs.pdf


Gruss

Jan