[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2004
    Beiträge
    44

    CCSID im IFS per Programm einstellen

    Hallo,
    ich muss für eine Anwendung sicherstellen, dass eine bestimmte Datei im IFS-Verzeichnis CCSID 1252 besitzt. Mit "umständlichem" CPY über WRKLNK kann ich das hinbekommen, aber gibt es nicht vielleicht auch ein API, mit dem es bequemer geht und das man in ein normales RPG(ILE)-Programm einbinden kann?
    Danke im Voraus.

    Jörg

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    26
    Hallo,
    ist allerdings auf Feldebene. Man kann von der Feldart u.A. die CCSID abfragen. Die Feldart muss natürlich CHAR sein.

    select dbiccc
    from QSYS/QADBIFLD
    where dbilib='BIBLIOTHEKSNAME'
    and dbifil='DATEINAME'
    and dbifld='FELDNAME'

    Mehr fällt mir da im Moment auch nicht ein.
    mfg
    Fred

  3. #3
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Hallo!

    @Jörg:

    Was meinst du mit "sicherstellen"? Ist die Datei bereits vorhanden und soll das Programm die CCSID prüfen, oder soll das Programm die CCSID ändern, oder erstellt das Programm die Datei und soll die CCSID gleich richtig setzen?

    @Fred:

    Deine Idee zum Prüfen der CCSID auf Feldebene ist gut, aber die geht leider nur für das Bibliothekssystem und nicht für das IFS.

    Viele Grüße
    Jürgen

  4. #4
    Registriert seit
    May 2004
    Beiträge
    44
    Danke für die Nachfrage - war wirklich ein wenig unkonkret formuliert:

    Genau genommen ist die Datei bereits vorhanden (der Anwender stellt eine JPG-Grafik in ein bestimmtes IFS-Verzeichnis). Um sie verarbeiten zu können, benötigen wir CCSID 1252. Es gilt also jetzt, die CCSID der Datei zu prüfen und bei Bedarf auf 1252 zu ändern.

    Zitat Zitat von Pikachu
    Hallo!

    @Jörg:

    Was meinst du mit "sicherstellen"? Ist die Datei bereits vorhanden und soll das Programm die CCSID prüfen, oder soll das Programm die CCSID ändern, oder erstellt das Programm die Datei und soll die CCSID gleich richtig setzen?

    @Fred:

    Deine Idee zum Prüfen der CCSID auf Feldebene ist gut, aber die geht leider nur für das Bibliothekssystem und nicht für das IFS.

    Viele Grüße
    Jürgen

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Die CCSID einer IFS-Datei ist nicht änderbar.
    Durch das Einstellen vom PC direkt in das Verzeichnis müsste die CCSID eigentlich von selbst auf 1252 gestellt werden.
    Erforderlich hierfür ist eine Freigabe (NetServer) ins "/home" und nicht ins "/QDLS".

    Für die Weiterverarbeitung einer Grafik-Datei ist die CCSID aber unerheblich !!!
    Beim Verarbeiten darf sowieso keine Code-Wandlung durchgeführt werden.
    Erstelle am besten per CRTPF eine Datei (autom. CCSID 65535) und kopiere per CPYFRMSTMF / CPYTOIMPF ohne jegliche Konvertierung.
    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

  6. #6
    Registriert seit
    May 2004
    Beiträge
    44
    Ich weiß auch nicht genau, wieso es vorkommt, aber bei unseren Anwendern war die besagte Datei jetzt schon mehrfach in CCSID 850 und wir haben ein Programm , das aus den Spools PDF-Dateien erzeugt und dabei die Grafik als Hintergrund einbindet. Und dabei wird die Grafik in 1252 erwartet, sonst funktionierts nicht. Weiß nicht genau, warum das so ist, aber so ist's halt....
    Inzwischen habe ich herausgefunden, dass ich mit dem Unix-API LSTAT die CCSID der Datei feststellen kann. Duch Hin- und Her-Kopieren mit CPY im WRKLNK kann ich offensichtlich auch die CCSID der Datei ändern, aber ein einfacheres Verfahren scheint es dann wohl doch nicht zu geben. Schade....
    Anbei noch eine ganz "dumme" Frage: gibt es eigentlich einen Unterschied zwischen den Begriiffen "CCSID" und "CodePage" oder bezeichen die beide dasselbe?

    Zitat Zitat von Fuerchau
    Die CCSID einer IFS-Datei ist nicht änderbar.
    Durch das Einstellen vom PC direkt in das Verzeichnis müsste die CCSID eigentlich von selbst auf 1252 gestellt werden.
    Erforderlich hierfür ist eine Freigabe (NetServer) ins "/home" und nicht ins "/QDLS".

    Für die Weiterverarbeitung einer Grafik-Datei ist die CCSID aber unerheblich !!!
    Beim Verarbeiten darf sowieso keine Code-Wandlung durchgeführt werden.
    Erstelle am besten per CRTPF eine Datei (autom. CCSID 65535) und kopiere per CPYFRMSTMF / CPYTOIMPF ohne jegliche Konvertierung.

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    CCSID 850 deutet darauf hin, dass die Datei z.B. in einer DOS-Box (z.B. .bat-File) erstellt wurde.
    CCSID 1252 wird aus direkten Windows-Anwendungen verwendet.

    CCSID = Coded Character Set Identification
    Der Begriff Codepage kommt noch aus den alten DOS-Zeiten, als Codesets noch als Page in den Speicher geladen werden mussten, bedeutet allerdings das Gleiche.
    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
    Dec 2000
    Beiträge
    450
    Wird die Datei auf der AS/400 erstellt, oder kommt sie vom PC?
    Mit dem Qshell-Befehl auf der AS/400 touch -C 1252 dateiname kannst du die Datei vorher mit der richtigen CCSID erstellen. Nachträglich geht da nichts mehr.

    Gruß
    Bruno

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    @Bruno

    Was nützt mir das vorherige Erstellen, wenn die Datei per Copy oder aus der Anwendung per Save erstellt wird ?
    Die meisten Anwendungen (incl. Explorer) killen die Datei vorher (Mit Abffrage "Möchten Sie wirklich ersetzten ...").
    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

  10. #10
    Registriert seit
    Dec 2000
    Beiträge
    450
    Deshalb wäre es ja wichtig zu wissen, wie die Datei auf die AS/400 kommt. Wenn ich z. B. zuvor eine Datei mit touch und einer bestimmtes CCSID erstellt habe und bringe dann Daten mit CPYTOSTMF rein, bleibt die eingestellte CCSID erhalten.

    Gruß
    Bruno

  11. #11
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    Wenn die CCSID in Deiner Netserver-Konfiguration auf 850 steht, werden die Dateien, die Du ins IFS stellst auch mit 850 erstellt. Ändere die Konfiguration doch mal auf CCSID 1252 ab und schau mal was dann rauskommt.

    Gruß,
    KM

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    KM, du hast ja recht, an was man nicht alles denken muss, tztz .
    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

Similar Threads

  1. IFS - Freigabe per Befehlszeile
    By eps330 in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 26-11-07, 12:24
  2. Dateien per FTP von IFS auf der AS400 holen
    By kroehn in forum NEWSboard Windows
    Antworten: 5
    Letzter Beitrag: 08-11-06, 19:36
  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. Lotus Domino / CCSID / IFS / Mail Anhang
    By Hrs28 in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 26-05-05, 13:16
  5. IFS CCSID
    By DEVJO in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 26-11-04, 19:01

Berechtigungen

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