[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Mar 2004
    Beiträge
    181

    CPYTOIMPF und CCSID

    Hallo *All,
    ich möchte eine Datenbankdatei per CPYTOIMPF in eine Textdatei kopieren. Meine Maschine ist auch CCSID 65535 eingestellt; ebenso die Jobs und die Felder in der Ursprungsdatei. Wenn ich nun meinen CPYTOIMPF Befehl mit *STDASCII absetze bekomme ich nur HEX Zeichen. Wenn ich andere Datei kopiere, funktioniert die Umwandlung ohne Problem ?!?
    Was muss ich denn ändern?

    THX Michael

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ändere wenigstens deinen Job auf eine gültige CCSID (z.B. 273).
    Dass Systeme immer noch mit *HEX (also 65535) arbeiten, halte ich sowieso für den größten Fehler.
    Aber wer hört schon auf mich
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Mar 2004
    Beiträge
    181
    Wenn ich meinen Job auf CCSID 273 setze, bekomme ich weiterhin Hexzeichen.

    Muß ich vielleicht bei STMFCODPAG die entsprechende Codepage mit angeben?

    CPYTOIMPF FROMFILE(TEST/TEST)
    TOSTMF('/TMP/DATEI.TXT')
    MBROPT(*REPLACE) STMFCODPAG(*PCASCII)
    RCDDLM(*CRLF) DTAFMT(*FIXED) STRDLM(*NONE)


    Zitat Zitat von Fuerchau
    Ändere wenigstens deinen Job auf eine gültige CCSID (z.B. 273).
    Dass Systeme immer noch mit *HEX (also 65535) arbeiten, halte ich sowieso für den größten Fehler.
    Aber wer hört schon auf mich

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Das hängt jetzt ein bisschen vom Release ab.
    Normalerweise wird von der Datei-CCSID in die Stream-CCSID gewandelt. Wenn die Datei keine CCSID hat, dann von der Job-CCSID.
    Seit V5R3 scheint die Job-CCSID nicht mehr relevant.
    Also: Ändere die CCSID der PF !!!

    *PCASCII => 1252 (auch ANSI)
    *STDASCII => 850
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    Das Problem liegt darin, dass vor V5R3 beim CPYTOIMPF immer erst eine temporäre Zwischendatei mit der CCSID des Jobs erstellt wurde. Deshalb wurden hier die Hex-Codes korrekt konvertiert. Und erst danach wurden die Datei aus der Zwischendatei in die Zieldatei geschrieben.
    Seit V5R3 entfällt dieser Schritt mit der Zwischendatei. Die Performance dieses Befehls wird zwar besser, nur wird jetzt die CCSID des Jobs nicht mehr berücksichtigt, da IBM nun konsequent durchzieht "wenn irgendwo 65535, dann keine Code-Konvertierung !!!". Leider besteht nun dieses Problem. Es gibt folgende Möglichkeiten dies zu umgehen:

    1. Datei auf eine andere CCSID setzen als 65535. Das kann natürlich fatale Folgen haben, wenn man bereits mit mehreren Sprachräumen arbeitet, da manche Zeichen dann nicht mehr darstellbar sind und Programme unter Umständen auf Fehler laufen.

    2. Den Schmonzens mit CPYTOIMPF und Konsorten durch ein kleines selbstgeschriebenes Programm/Tool ablösen, das die IFS-APIs verwendet. Dann kannst Du die CCSID von Hand einstellen.

    3. Du benutzt den Befehl CPYTOIMPF aus der V5R2-Umgebung. Dazu musst Du einfach nur folgenden Befehl absetzen:
    CRTDTAARA DTAARA(QSYS/QCPTOIMPF) TYPE(*CHAR) LEN(6) VALUE(CPV5R2)
    Dann funktioniert der Befehl wieder so wie Du ihn von früher kennst. Musst natürlich bei Releasewechseln aufpassen. Außerdem ist es keine Dauerlösung, sondern nur eine vorübergehende.

    Gruß,
    KM

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Die korrekte Dauerlösung:

    Jede Datei muss eine korrekte CCSID besitzen.
    Mehrere Sprachräume können nur so korrekt unterstützt werden.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    Jede Datei muss eine korrekte CCSID besitzen.
    Mehrere Sprachräume können nur so korrekt unterstützt werden.
    Wer sämtliche betroffenen Dateien doppelt oder mehrfach (je nach Anzahl Sprachräume) pflegen und verwalten will, kann das gerne tun. Schließlich kann jeder für sich selbst entscheiden, was für ihn die bessere bzw. einfachere Variante ist. Ich habe Michael nur ein paar Möglichkeiten aufgelistet, wie er sein Problem umgehen kann.

  8. #8
    Registriert seit
    Mar 2004
    Beiträge
    181
    Vielen Dank für die Infos...

    Gruß,

    Michael

Similar Threads

  1. Konvertierung nach Graphic --> CCSID Problem
    By codierknecht in forum NEWSboard SAP
    Antworten: 32
    Letzter Beitrag: 09-02-18, 13:00
  2. cpytoimpf die ...
    By malzusrex in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 14-12-06, 17:20
  3. CPYTOIMPF - Leerzeichen am Ende?
    By mott in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 09-10-06, 11:28
  4. CPYTOIMPF Format
    By Muchi in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 03-08-06, 09:41
  5. CPYTOIMPF Ergebnis nicht lesbar
    By SUBUIS in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 09-05-06, 09:36

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •