[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Mar 2003
    Beiträge
    35

    Unhappy Probleme mit IFS und CCSID

    Hallo Forum,

    folgendes Problem.
    Ich habe per Windowslaufwerke eine IFS Datei kopiert. Diese hat nun als CCSID 819 der Inhalt der Datei ist jedoch 500 ! EBCDIC.

    Wenn ich nun mit WRKLNK Option 5 die Datei anschaue wird Sie richtig dargestellt.

    Jedoch erscheint eine Fehlermeldung
    "Datei-CCSID ist nicht korrekt "

    Wenn ich nun diese Datei über RPG öffne, bekomme ich jedoch nur Salat angezeigt ( vermutlich ASCII ).

    Ich öffne diese Datei mit dem API "_C_IFS_OPEN"

    Ich habe es auch schon mit folgenden Aufruf versucht

    hFileHwd = open (%trim(Dateiname) + NULL : 'r, ccsid=500' )

    gleiches Ergebnis.

    Habe ich was übersehen. WRKLNK bringt das ja auch auf die Reihe. Was mache ich falsch ?

    Für Anregungen wäre ich sehr Dankbar

    gruß Franz

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Beim Open gilt IMMER die CCSID der IFS-Datei. Der Parameter "ccsid=500" gilt nur dann, wenn die IFS-Datei selber keine CCSID hat (also *HEX=65535).
    Beim Lesen werden die Daten dann in die JOB-CCSID konvertiert.

    Wenn du die Datei über eine Freigabe von Windows auf das IFS kopierst, erhält die Datei die im NetServer eingestellte Standard-CCSID. Ändere dort die CCSID z.B. auf 1252 (Codepage ANSI=Windows). Der NetServer muss dann nochmal beendet und wieder gestartet werden.

    Der WRKLNK konvertiert ebenso bei der Dateianzeige von der File-CCSID in die JOB-CCSID.

    Schau dir die Datei noch mal über den Explorer im Windows an. Kannst du die Daten dort im Klartext lesen, dann sind das ASCII- und keine EBCDIC-Daten.
    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 2003
    Beiträge
    35
    Hallo ,

    Das was da drinsteht ist definitiv EBCDIC. Auf der Quellmaschine kann ich den Inhalt auch ohne Probleme mit RPG lesen.

    Kann man eigentlich den bei IFS Dateien den Datei-CCSID ändern, ähnlich wie chpf ccsid(500) ?

    gruß Franz

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Eine Änderung der CCSID ist leider nicht möglich.
    Beim CHGPF würde ich aber auch aufpassen, da dort dann eine Datenumsetzung erfolgt !
    Hat die PF z.B. eine CCSID 273 und ich wechsle auf 500 werden alle Zeichenfelder von 273 auf 500 übersetzt. Möchte ich KEINE Umsetzung muss ich den Zwischenschritt über 65535 gehen.

    Dein Problem ist das Kopieren von Maschine A auf Maschine B über das IFS.
    Auf A wird die IFS in EBCDIC erstellt, also wahrscheinlich mit CCSID *HEX.
    Kopierst du nun über Windows auf eine Netserver-Freigabe, erhält die Datei eine CCSID entsprechend der Einstellung des Netservers. Windoof kennt nämlich keine CCSID an Dateiobjekten.

    Möchtest du die IFS-Datei nun in EBCDIC-500, musst du diese per CPYFRMSTMF in eine PF kopieren mit CVTDTA(*NONE) und ggf. wieder zurück in eine neue IFS-Datei mit CVTDTA(*NONE) oder die PF-Datei dann mit RPG verarbeiten.
    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
    Registriert seit
    Mar 2003
    Beiträge
    35
    Danke Baldur,

    das wars. Ich habe die Datei mit

    CPYFRMSTMF FROMSTMF('/home/FABAX/59466036')
    TOMBR('/qsys.lib/fabax1.lib/test.file/test.mbr')
    MBROPT(*ADD)
    CVTDTA(*NONE)


    in eine physische Datei kopiert, und dann mit


    CPYTOSTMF FROMMBR('/qsys.lib/fabax1.lib/test.file/test.mbr')
    TOSTMF('/home/FABAX/59466036')
    STMFOPT(*REPLACE)
    CVTDTA(*NONE)
    DBFCCSID(*FILE)
    STMFCODPAG(500)


    wieder in IFS zurückgeholt. Dabei habe ich den Parameter STMCODPAGE auf 500 gestellt. Nun ist Sie absolut sauber und kann gelesen werden

    Danke

    gruß FX

  6. #6
    Registriert seit
    Sep 2001
    Beiträge
    156
    Die CSSID der Datei kann wie folgt geändert werden:
    WRLNK
    Datei Editieren <2>
    F15 Services
    Auswahl <3>

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Das hilft leider nicht für Batch, oder gibts dazu ein passendes Kommando ?
    Ich denke eher, das der EDTF dann halt beim Speichern die Datei eben neu erstellt, was mit obiger Methode ja gemacht wird.
    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

  8. #8
    Registriert seit
    Oct 2005
    Beiträge
    39
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Das hilft leider nicht für Batch, oder gibts dazu ein passendes Kommando ?
    Ich denke eher, das der EDTF dann halt beim Speichern die Datei eben neu erstellt, was mit obiger Methode ja gemacht wird.
    Ab V5R3 sollte das mit CHGATR OBJ('/temp/test.txt') ATR(*CCSID) VALUE(800) funktionieren

  9. #9
    Registriert seit
    Jan 2007
    Beiträge
    32
    chgatr geht auch bei V5R2.

  10. #10
    Registriert seit
    Mar 2003
    Beiträge
    80

    CHGPF

    Hallo!

    Bei CHGPF werden keine Zeichen umgesetzt.
    Es wird nur ein anderes Etikett aufgeklebt.
    Ab diesem Zeitpunkt wird allerdings bei CPYF bzw. Schreib-/Leseoperationen eine Umsetzung zur Job-CCSID gemacht.

    lg

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    @alfredo

    Das ist so nicht ganz richtig !
    Beim CHGPF von 65535 (*HEX) auf eine andere CCSID oder umgekehrt ist das korrekt.
    Baim CHGPF von CCSID xxx auf CCSID yyy (z.B. von 273 auf 285) erfolgt aber eine Datenkonvertierung !!!
    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

  12. #12
    Registriert seit
    Mar 2003
    Beiträge
    80

    CHGPF

    @Fürchau

    Dann versuch mal folgendes:
    Gib in eine Datei(273) in ein Feld ÄÜ ein.
    Ändere die Datei auf CCSID 870
    Bei DSPDB siehst Du jetzt , aber nicht weil die Daten geändert wurden sondern die Zeichen von CCSID 870(Datei) auf CCSID 273(Job) gedreht wurden.
    Wenn Du den Job auch auf 870 änderst, erfolgt keine Umsetzung, daher siehst Du auch wieder ÄU.
    Bei DSPPFM erfolgt übrigens keine Umsetzung.

    Das heisst:
    Wenn man nachträglich eine lebende Datei auf einen andere CCSID umstellen will, muss man eine leere Datei mit dem neuen Zeichensatz anlegen und von der alten kopieren.

    lg
    alfred

Similar Threads

  1. probleme file ins IFS stellen
    By steven_r in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 30-01-07, 07:48
  2. Probleme IFS
    By PeterKarsten in forum NEWSboard Windows
    Antworten: 2
    Letzter Beitrag: 05-12-06, 14:14
  3. Windowstabelle wird im IFS in CCSID 1252 erstellt
    By umeis in forum NEWSboard Windows
    Antworten: 3
    Letzter Beitrag: 11-08-06, 12:45
  4. IFS als Netzlaufwerk - Probleme bekannt?
    By kuempi von stein in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 19-07-06, 13:14

Berechtigungen

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