[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo Roderich,

    falls Du mit Datei ein Streamfile im IFS meinst, da hängt es von den verwendeten lese/schreib Methoden ab, ob konvertiert oder transparent verarbeitet wird. Beim lesen brauchst Du da eigentlich nix anzuugeben, beim erzeugen nur dann, wenn Du eine andere haben willst, wie Dein Job hat.

    mfg

    Dieter Bender

    Zitat Zitat von rod
    Hallo,

    danke für die Antworten.

    Der Job läuft unter Codepage 273, die (Test-)Datei hat auch 273. Das Programm muss aber auch mit Dateien mit anderen CCSIDs zurechtkommen (allen normalen CCSIDs, nicht 65535) . Das lesen aus der Datei erfolgt nicht mit JDBC sondern per:

    new BufferedReader(new InputStreamReader(
    new FileInputStream(file), "???Codepage???"));

    Ich bin allerdings nicht auf die Idee gekommen keine Codepage anzugeben.
    Das werde ich jetzt als erstes probieren.

    Danke!

    Roderich Hellwig
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  2. #2
    rod Besucher/Guest
    Hallo,

    ohne Angabe einer Codepage wird leider die Datei in (wahrscheinlich) ISO_8859-1 aufgemacht.
    Was ich machen will ist, z.B.:
    new BufferedReader(new InputStreamReader(
    new FileInputStream(new File("/QSYS.LIB/TESTLIB.LIB/TESTF.FILE/MEMBER.MBR"), "???Codepage???"));

    Dass funktioniert bei mir nur dann korrekt, wenn ich die richtige Codepage angebe.

    z.B.:
    new BufferedReader(new InputStreamReader(
    new FileInputStream(new File("/QSYS.LIB/TESTLIB.LIB/TESTF.FILE/MEMBER.MBR"), "Cp273"));

    angebe.

    Damit ich hier die Dateien (Physical Files) korrekt aufmachen kann, muss ich irgendwie herausfinden, welche Codepage diese haben.

    Und wie das funktioniert weiss ich nicht.

    Schönen Gruß
    Roderich

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Auch das ist normalerweise unerheblich. Durch Angabe der CP wird beim Lesen halt in diese CP umgesetzt.
    Wenn die PF z.B. CP500 hat, kannst du diese trotzdem mit CP273 lesen.

    Übrigens:
    Das ganze geht nur mit PF's, die KEINE gepackten oder sonstige Nicht-Zeichen-Felder enthalten !!!
    Du öffnest einen Zeichen-Stream, so dass keine Feldumsetzung stattfindet.
    Der bessere und sicherere Weg ist (wie Dieter schon sagt) SQL !!!
    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

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,


    Zitat Zitat von rod

    new BufferedReader(new InputStreamReader(
    new FileInputStream(new File("/QSYS.LIB/TESTLIB.LIB/TESTF.FILE/MEMBER.MBR"), "Cp273"));

    Roderich
    hier sehe ich erst mal zwei Sachen:*
    1. der Konstruktor von File wird verbogen bedient, es gibt nur einen Konstruktor von File(String parent, String child) bei dem child mit der CCSID nix zu tun hat.

    2. Du öffnest hier ein Objekt aus dem QSYS.LIB als File, das ist aber Datenbank und sollte mit JDBC angepackt werden, dann funzt das auch.

    mfg

    Dieter Bender
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    rod Besucher/Guest
    Hallo Dieter,

    zu 1: das "Cp273" gehört zum Constructor des FileInputStream (funktioniert ja auch mit Cp273)

    InputStreamReader(
    new FileInputStream(file, "Cp273"));

    zu 2:

    Das ist ja gerade mein Problem, das dieses Lesen aus eine AS400 DB-Datei (physische Datei) NICHT per JDBC erfolgen kann, sondern ich einen BufferedReader benötige.
    Hintergrund ist der, das wir hier eine plattformunabhängige Java-Applikation haben, in welcher ich es nicht ändern kann, das ich einen BufferedReader benötige UND die Daten in physischen Dateien vorliegen. Ein umkopieren in STMFiles ist wegend der großen Datenmengen leider keine wirkliche Alternative.

    Danke für die Antworten.

    Roderich

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Gerade das ist doch der Vorteil von JAVA, dass du je nach Datenbank nur einen anderen JDBC-Treiber benötigst (über z.B. ein Property-Datei einstellbar incl. Verbindungsfolge), aber alle SQL-Zugriffe (bis auf wenige Ausnahmen) immer identisch sind.
    Wenn du erst mühsam eine PF in eine STMF umkopieren musst, ist ja der ganze Vorteil der DB hinüber.
    Was machst du denn, wenn es mal eine andere DB ist (ORACLE, MySAP, usw.) ?
    Was ist mit Einzelsatz-Zugriffen ? Musst du dann immer alle Sätze der STMF durchackern ?

    Ich würde das Konzept da nochmal überprüfen !!
    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
    Feb 2001
    Beiträge
    20.696
    PS:
    Mit CP273 erhältst du die Daten in EBCDIC und mnusst sie auch noch selber wandeln.
    JAVA arbeitet z.B. in ISO8859-1 oder sogar UNICODE.
    Wo ist da der Vorteil, alles selber machen zu müssen ?
    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
    rod Besucher/Guest
    Hallo,

    mit Cp273 lese ich die Daten nur mit der richtigen Codepage, Javaintern habe ich sie immer in UNICODE.
    Die Konvertierung erfolgt automatisch bei Angabe der richtigen Codepage.

    Schönen Gruß
    Roderich


    Zitat Zitat von Fuerchau
    PS:
    Mit CP273 erhältst du die Daten in EBCDIC und mnusst sie auch noch selber wandeln.
    JAVA arbeitet z.B. in ISO8859-1 oder sogar UNICODE.
    Wo ist da der Vorteil, alles selber machen zu müssen ?

  9. #9
    rod Besucher/Guest
    Es geht hier um die Umsetzung einer DB die auf allen Plattformen erst in Textdateien ausgelesen werden , das wollte ich mir auf der AS/400 schenken. Und anschliessend in einem neuen Format per jdbc in die DB geschrieben wird.
    Diese Funktionalität ist so gewählt, da es einfacher ist, die DB auszulesen, wegzuschmeissen, neu aufzubauen und zu befüllen, als zwei parallele DBs zu haben, das hiesse erst eine komplett neue DB anzulegen, und dann zwischen diesen hinundherzuschaufeln. Auf der AS/400 ist das recht einfach, aber mit MSSQL, Oracle usw ist das nicht so einfach....

    Schönen Gruß

    Roderich

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    Zitat Zitat von rod
    new FileInputStream(file, "Cp273"));
    Roderich
    was hast Du da für einen FileInputStream? meiner (JDK SE 1.4.2) hat einen solchigen nicht?!

    Dieter Bender
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #11
    rod Besucher/Guest
    Hallo Dieter,

    entschuldigung, mein Fehler:
    mReader = new BufferedReader(new InputStreamReader(
    new FileInputStream(file),"Cp273"));

    das ist ein Parameter im Constructor des InputStreamReader

    Schönen Gruß
    Roderich



    Zitat Zitat von BenderD
    Hallo,



    was hast Du da für einen FileInputStream? meiner (JDK SE 1.4.2) hat einen solchigen nicht?!

    Dieter Bender

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo Roderich,

    das ist bei knappen Codesnippets manchmal nicht so einfach, das auf einen Blick zu erfassen, zumal mich das file ein wenig verwirrt, der FileInputStream wäre auch mit dem Pfad zufrieden.
    An die CCSID kommt man wohl über die File und co Objekte nicht dran, was weiß ein Windows oder Unix File dass es eine CCSID haben könnte und gar welche. Die einzige Chance wäre über das IFSFile Objekt aus dem Toolbox Zinnober, aber ich habe die Scheu immer noch nicht verstanden das auf einer AS400 in ein Streamfile zu schreiben, oder wo kommen die Daten denn her?
    Ich bin allerdings immer noch nicht davon überzeugt, dass die falsche Umwandlung ohne Angabe der CCSID ein Feature und kein Bug ist - wie stehts mit euren Java PTFs?

    mfg

    Dieter Bender

    Zitat Zitat von rod
    Hallo Dieter,

    entschuldigung, mein Fehler:
    mReader = new BufferedReader(new InputStreamReader(
    new FileInputStream(file),"Cp273"));

    das ist ein Parameter im Constructor des InputStreamReader

    Schönen Gruß
    Roderich
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Konvertierung nach Graphic --> CCSID Problem
    By codierknecht in forum NEWSboard SAP
    Antworten: 32
    Letzter Beitrag: 09-02-18, 13:00
  2. Java und Fehlermeldung jva0122 bei simplen "Hello World"
    By TARASIK in forum IBM i Hauptforum
    Antworten: 21
    Letzter Beitrag: 30-03-11, 13:48
  3. Antworten: 3
    Letzter Beitrag: 06-06-06, 15:57
  4. CCSID ändern
    By schaaf in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 04-05-06, 11:18
  5. CCSID eines Files
    By Binford in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 07-03-06, 08:58

Berechtigungen

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