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

Hybrid View

  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Ok, das wäre mir neu.
    *period ist bei uns der voreingestellte Wert.
    Bleibe aber bei der 'zuerst nach Alpa' Methode. In eine CSV Datei kann sooooo viel Mist stehen.
    (Bsp: Datumsfeld: kommt 5 mal als ttmmJJJJ und dann als 'schnellstens'

    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  2. #2
    Registriert seit
    Aug 2006
    Beiträge
    47
    Konkret steht in einem Datenfeld z.B. der Inhalt

    1.750,00

    In der Zieldatei der AS400 ist das Datenfeld mit 9 Stelllen, davon 2 Dezimalstellen definiert

    Bei CPYFRMIMPF DECPNT(*COMMA), was dem Kommazeichen entspricht, können alle Inhalte < 1000 übernommen werden, die höheren, wenn mit Tausenderpunkt, werden nicht übernommen.
    Bei DECPNT(*PERIOD) werden keine Sätze übernommen.

    Ich kann mir auch nicht vorstellen, dass ein Parameter, der das Dezimalzeichen steuert, auch den Tausender-Punkt regelt.

  3. #3
    Registriert seit
    Aug 2006
    Beiträge
    2.114
    Tja die hilft Dir wohl nur der Import in Excel und dann wieder als CSV speichern. Vielleicht kannst Du ja auch mit einem Editor . suchen und durch nichts ersetzen.GG

  4. #4
    Registriert seit
    Aug 2006
    Beiträge
    47
    Das sollte ein automatisierter Ablauf sein.

    Wenn ich CSV als Excel öffne, habe ich das nächste Problem, dass dann andere Felder mit sehr langen "rein numerischen Inhalten" (zB. Tel.Nr. mit Ländervorwahl + Ortsvorwahl usw.) dann automatisch mit "E-Inhalten" im Excel dargestellt werden und beim Speichern (als CSV-Datei) dann auch mit diesen (unbrauchbaren) Inhalten gespeichert werden.

    Hat dieses Problem mit den Tausenderpunkten bisher noch niemand gehabt?

  5. #5
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Doch, hab ich doch geschrieben.
    Definiere ALLE Felder der Zieldatei als alpa.
    Schreibe ein mini Pgm, das via input/output die Felder prüft, formatiert und so ausgibt, wie du es brauchst.
    Läuft hier bestimmt mit 20 Schnittstellen so!
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  6. #6
    Registriert seit
    Aug 2006
    Beiträge
    2.114
    Und was hälst Du dann davon, die Datei in eine Zwischendatei zu importieren, das Feld per SQL zu ändern und entweder dann per SQL in die richtige Datei schreiben Alpha-Feld per Cast in numerisch wandeln oder zu exportieren und dann in die richtige Datei zu importieren.Dürfte nicht viel Zeit kosten das zu realisieren. Alternativ habt Ihr jemanden der Cobol oder RPG kann.GG

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    1000er Trennzeichen werden tatsächlich von SQL nicht unterstützt.
    CPYFRMIMPF verwendet intern nämlich SQL.
    Um die Daten per SQL zu verarbeiten ist ein Replace der Punkte mit "Nichts" erforderlich um anschließend per CAST(TRIM(...)...) in Dezimal zu wandeln.
    Also, wie der Vorredner schon sagt:
    Importdatei mit Alphafeldern, SQL-View über die Alphafelder mit erforderlichen Casts.
    Dann kann locker die View verwendet 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

  8. #8
    Registriert seit
    Aug 2006
    Beiträge
    47
    Danke für Tipps; ich werde wohl die SQL-Variante verwenden.

    Trotzdem schade, dass es keinen "eigenen" Parameter im CPYFRMIMPF gibt (ähnlich zu DECPNT oder RPLNULLVAL).
    Da ist wohl IBM gefordert. ;-)

  9. #9
    Registriert seit
    Oct 2013
    Beiträge
    175
    Oder man lässt csv-Dateien von Programmierern erstellen, die wissen, was sie tun.
    Nicht für jeden Schrott ist gleich IBM aufgerufen, was zu tun.

  10. #10
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Stimmt!
    Häufig sind CSV Dateien Excel 'Masken', erstellt vom Neffen vom Chef, in denen der Anwender ALLES machen kann.
    Bsp.:
    Datum der Abgabe: 08.04.2014, 14/04/08, 20140408 ,"Schnellstens"
    Monat der Fertigstellung: Januar, Jan, 01, 01/2014, "bald"
    Wert: 15,00 oder 1.500,99 oder "steht noch nicht fest"

    fröhliches Schnitstellen gestalten mit SQL

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... CPYFRMIMPF ist lediglich ein dümmlicher Name. Andere Datenbanken nennen solche Routinen load und unload. Sprich: die CSV Files kommen aus einer Datenbank, werden transportiert und dann landen sie wieder in einer anderen Datenbank - und wenn die Tabellen zueinander passen, dann geht das alles.
    Für "echten" Schrott (Datum schnellstens etc.) hat CPYFRMIMPF die beiden Parameter ERRLVL, ERRRCDFILE und ERRRCDOPT (F1 und lesen macht schlauer). Mit den Tausenderpunkten ist das so eine Sache, das könnte CPYFRMIMPF händeln und sollte es wohl auch tun. EIn search/replace ist wohl zu wenig, der würde auch "." in Strings entfernen, sich dafür einen Filter zu schreiben, sollte wohl jeder Programmeur-AZUBI hinbekommen...

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

  12. #12
    Registriert seit
    Jan 2008
    Beiträge
    159
    bin zufällig auf diesen beitrag gestossen; wie wurde das problem tatsächlich gelöst ?

Similar Threads

  1. CPYFRMIMPF Problem
    By heynem in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 09-05-03, 07:00
  2. Datentransfer von PC zur AS400 - CPYFRMIMPF?
    By mott in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 16-04-02, 20:41
  3. Cpyfrmimpf
    By Stefan_R in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 30-07-01, 17:42

Berechtigungen

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