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

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    CPYFRMIMPF ... DECPNT(*PERIOD)
    Wenn das mangels Dezimalpunkt auf einen Fehler läuft, kannst du dann alternativ einen 2. Aufruf mit
    CPYFRMIMPF ... DECPNT(*COMMA)
    durchführen.
    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

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Der tausender Punkt in dem 'Numerischen' Feld macht das Feld zu einem Alpa Feld.
    Ich glaube nicht das du den so wegbekommst.
    Also: Zieldatei mit Alpa-Feldern definieren und per Pgm nach der Übername in die eigendliche Zieldatei umschubsen. Wir haben nur in den seltensten Fällen CSV-Datei Lieferanten, bei dehnen ein Num Feld
    immer als NUM-Feld kam !
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    CPYFRMIMPF ... DECPNT(*PERIOD)
    hat bei mir immer geholfen.
    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
    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!)

  5. #5
    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.

  6. #6
    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

  7. #7
    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?

  8. #8
    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!)

  9. #9
    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

  10. #10
    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

  11. #11
    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. ;-)

  12. #12
    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.

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
  •