[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Mar 2006
    Beiträge
    5

    CCSID eines Files

    Hallo!

    ich bin neu hier im Forum und leider etwas verzweifelt.
    Ich habe folgendes Problem: Ich möchte mittels Java oder JDBC die CCSID eines Files herausfinden.
    Unser Szenario:
    Ein Java Programm auf einer Windows Büchse liest ein File von AS/400 Server A und schreibt dieses File auf einer AS/400 Büchse B. Die CCSID auf B soll dieselbe wie auf A sein!.
    Ich kann über Java oder JDBC das File lesen und auch auf B schreiben, nur kenne ich in Java nicht mehr die Ursprungs CCSID und weiss deshalb nicht welche ich beim schreiben verwenden soll.
    In der Klasse ASFile gibt es leider keine Methode welche mir die CCSID liefert. Gibt es eine Systemtabelle wo pro File die verwendete CCSID abgelegt ist oder sonst eine Möglichkeit? Über DSPFD kann ich ja die CCSID sehen, aber wie komme ich aus Java oder via JDBC daran?

    Vielen Dank für eure Hilfe

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Wenn du JDBC, also SQL verwendest, sollte dir die CCSID vollkommen egal sein. Hauptsache, alle beteiligten Dateien haben überhaupt eine (also <> 65535).
    Beim Lesen von Zeichendaten wird in UNICODE konvertiert und beim Schreiben in die ZielCCSID. Einen programmtechnischen Eingriff sollte man nicht vornehemn.

    Läuft dein Java auf der AS/400, sollte dein Job eine CCSID <> 65535 haben, da sonst überhaupt nicht konvertiert 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

  3. #3
    Registriert seit
    Mar 2006
    Beiträge
    5
    Hallo,

    erstmal vielen Dank für die schnelle Antwort.
    Es ist aber leider eine Anforderung des Projektes, dass die ccsid's auf server A und B dieselben sind.
    Es muss doch irgendwie möglich sein, die ccsid eines Files abfragen zu können, oder?l
    Gibt es ein RPG das man aufrufen kann?

    Vielen Dank!i

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Wie werden die Dateien denn erstellt ?
    Wenn du CREATE TABLE verwendest, nimmt das System automatisch die CCSID der Systemsprache, auch hier brauchst du nichts tun !
    Wenn die Dateien/Tabellen bereits existieren, darfst du gar nichts mit der CCSID tun. Dann gilt bereits oben gesagtes.

    Die Anforderung kann ich da nicht so verstehen.

    Es gibt AS/400-API's oder DSPFD mit Ausgabedatei um CCSID's abzufragen.
    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 2006
    Beiträge
    5
    Hi,

    also. ich verwende die Methode create der Klasse AS400File von JTOPen.

    create(RecordFormat recordFormat, String textDescription, String altSeq, String ccsid, String order, String ref, boolean unique, String format, String text)

    Hier kann ich die gewünschte CCSID der Ziel Datei angeben. Funktioniert auch wunderbar. Nur fehlt mir zu meinem Glück noch die Quell CCSID.

    Kannst du mir die APIs/RPGs nennen? Oder gibt es nicht eine System Tabelle welche die Fileattribute, wie z.b. ccsid, beinhaltet und welche ich via JDBC abfragen kann?
    DSPFD hab ich via Java aufgerufen, nur leider bekomme ich nicht das Ergebnis ... ich sehe nur, dass der Call erfolgreich war.

    Vielen Dank für die Hilfe!

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Naja, mit SQL wäre es effektiver:

    Create Table MyTable (Field as char(nn) CCSID xxxx, ...)

    Die Quellinformationen erhältst du aus QSYS2/SYSCOLUMNS !
    Das ist allerdings Releaseabhängig ob das Feld CCSID vorhanden ist (ab V5 glaube ich).
    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
    Registriert seit
    Mar 2006
    Beiträge
    5
    Hallo,

    vielen dank für deine Info. Ja, in der SYSCOLUMNS hab ich die CCSID gefunden.

    Ich hab auch noch eine Möglichkeit über Java gefunden:

    SequentialFile mySF = new SequentialFile(myAS400, filename);
    mySF.setRecordFormat();
    RecordFormat recordformat = mySF.getRecordFormat();
    if(recordformat != null)
    {
    for(int i = 0; i < recordformat.getNumberOfFields(); i++)
    {
    AS400DataType as400datatype = recordformat.getFieldDescription(i).getDataType();
    if(as400datatype.getInstanceType() != 9)
    continue;
    ccsid = ((AS400Text)as400datatype).getCcsid();
    }

    }
    System.out.println("The mystic ccsid is " + ccsid);

Similar Threads

  1. Konvertierung nach Graphic --> CCSID Problem
    By codierknecht in forum NEWSboard SAP
    Antworten: 32
    Letzter Beitrag: 09-02-18, 13:00
  2. Antworten: 3
    Letzter Beitrag: 25-01-07, 09:29
  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. Restore von QHST* files
    By mtu in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 06-06-06, 08:15
  5. CCSID ändern
    By schaaf in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 04-05-06, 11:18

Berechtigungen

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