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

Thema: cpytoimpf

  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    cpytoimpf

    Hi,
    ich habe eine Datei die recht lange Felder enthällt

    in den Feldern steht
    Feld1 : (512 Stellen alpha)
    10.08.2009";"11.09.2009";15.10.2009

    (genau so, vorne und hinten kein ")
    in Feld 2 : (512 Stellen alpha)
    08:00:01";"09:30:07";"12.45.13
    (genau so, vorne und hinten kein ")

    folgender Befehl sollte eigentlich die blanks in den Feldern weghauen
    Code:
        CPYTOIMPF  FROMFILE(KAMPA#2P) TOSTMF(&PFAD) +             
                     MBROPT(*REPLACE) FROMCCSID(1141) +           
                     STMFCODPAG(*PCASCII) RCDDLM(*CRLF) +         
                     DTAFMT(*DLM) STRDLM(*DBLQUOTE) +             
                     STRESCCHR(*STRDLM) RMVBLANK(*BOTH) +         
                     FLDDLM(',') NULLIND(*NO) DECPNT(*PERIOD) +   
                     DATFMT(*ISO) TIMFMT(*ISO)
    und DAS
    "10.08.2009";"11.09.2009";15.10.2009","08:00:01";"09:30:07";"12.45.13"
    als Ergebnis bringen.

    Statdessen habe ich
    "10.08.2009";"11.09.2009";15.10.2009 endlos *blank ","08:00:01";"09:30:07";"12.45.13 endlos *blank "

    Was macht RMVBLANK(*BOTH) (wenn nicht die Blank entfernen ?)

    Danke
    Robi

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    RMVBLANK funktioniert nicht in Kombination mit STRDLM.
    Bei CSV's gilt folgendes:
    - Zeichenketten können wahlweise in " eingebettet werden, sie müssen eingebettet werden, wenn sie selber das Trennzeichen enthalten
    - numerische Werte erhalten keine "

    Wird nun ein STRDLM definiert, werden KEINE Blanks bei Zeichenketten sondern nur bei numerischen Werten enfernt.
    Ohne STRDLM werden Zeichenketten getrimmt und ohne STRDLM ausgegeben, was ggf. bei enthaltenem Trennzeichen eben Probleme macht.

    Eine Zeichenkette darf aber selber STRDLM nicht enthalten, da es sonst auch zu Problemen kommen wird.
    Bei z.B. Programmiersprachen muss das Zeichen dann verdoppelt werden, was der CPYTOIMPF allerdings nicht zu tun scheint.
    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
    Jun 2001
    Beiträge
    2.044

    irgendwie nicht

    Hallo,
    ich habe meine String Felder nun vorne und hinten mit " ausgestattet.
    STRDLM steht nun auf *none
    trotzdem habe ich die blanks noch
    Danke
    Robi

  4. #4
    Registriert seit
    Mar 2005
    Beiträge
    74

    Variable Länge

    Das Feld muß als Character-Feld mit variabler Länge definiert werden (DDS VARLEN oder SQL VARCHAR). Dann sollte es funktionieren.

    Dann eventuell beim Füllen des Feldes noch beachten: Wenn das Feld aus einem anderen grossem Feld gefüllt wird, was nicht VARCHAR ist, den Inhalt vorher trimmen damit die Leerzeichen entfernt werden. Character-Felder mit fester Länge werden immer mit Leerzeichen aufgefüllt.
    langesfeld = %trim(inhalt)

  5. #5
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    Das geht leider nicht

    Das 'darf' ich nicht.
    Ist nicht meine Datei.
    ich könnte sie per Pgm in eine mit Var len kopieren, ...
    Hm, mal sehn ob das 'genemigt' wird

    andere Vorschläge ?
    Danke
    Robi

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hi Robi,

    ich hab's nicht ausprobiert, aber was wäre, wenn Du eine temporäre View (mit TRIM und VARCHAR-Feldern)) erstellen würdest (embedded SQL!), dann den CPYFROMIMPF mit der View ausführst und die View anschließend wieder löschst?


    PHP-Code:
    CREATE VIEW QTEMP/MYVIEW
    as (Select Fld1Cast(Trim(Fld2) as VarChar(50)) Fld2, ....
          
    From MyFile); 
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  7. #7
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Hallo Birgitta,
    das Projekt wurde grade auf Eis gelegt, da der Schnittstellenpartner mit seiner eigenen Dateibeschreibung nicht klarkommt

    Ist ne gut Idee von dir, wenn's weitergeht werde ich es mal versuchen, dnake

    schönen Gruß

    Robi

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    basierend auf deinen Ursprungsangaben habe ich das nun auch ausprobiert:

    CPYTOIMPF FROMFILE(TESTCSV)
    TOSTMF('/Home/Fuerchau/TestCSV')
    MBROPT(*REPLACE)
    STMFCODPAG(1252)
    RCDDLM(*CRLF)
    RMVBLANK(*BOTH)
    FLDDLM(',')

    Das Ergebnis ist folgendes:
    "10.08.2009"";""11.09.2009"";15.10.2009","08:00:01"";""09:30:07"";""12.45.13"

    Leerzeichen wurden korrekt entfernt, Das "-Zeichen wurde korrekt verdoppelt, siehe STRESCCHR(*STRDLM) !

    Ich kann nun nur vermuten, dass deine Datenquelle keine Leerzeichen enthält !
    Schau mal per DSPPFM -> F10 nach.
    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

  9. #9
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Doch doch, leerzeichen sind drin ...

    bei deinem Ergebnis sind die doppelten " anders als bei meiner 'soll' vorgabe.

    aber, das PJ ruht z.zt. werde mich melden, wenn es weitergeht

    Danke an die freißigen Helfer, und schönes Wochenende

    Gruß
    Robi

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wenn du schon STRDLM(*DBLQUOTE) angibst, muss das Ergebnis genau so sein, da dein Beispieltext eben DBLQUOTE enthält müssen diese auch verdoppelt werden.

    PS:
    Prüfe mal auf jeden Fall deine CCSID's der PF und des Job's.
    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
    Jun 2001
    Beiträge
    2.044
    CCSID werde ich prüfen (wenn' s weiter geht), Danke

    Was die doppelte takken (") angeht ... vielleicht hab ich es undeutlich formuliert ...

    ich komme aus einer PF in der innerhalb der Feldes die " stehen.
    Sie (die as400) soll dem Feld vorne und hinten " hinzufügen.
    Das Ergebnis währen keine doppelten " IN dem Feld,
    (klappt ja auch, bis auf die Leerzeichen)

    Gruß
    Robi

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Reden wir hier über Anführungszeichen oder Hochkoma ?
    Das ist hier nicht eindeutig zu sehen.

    Bei CSV ist die Definition so, dass STRDLM innerhalb eines Feldes nicht vorkommen darf.
    Wenn doch, wird STRESCCHR vor dem Zeichen eingefügt. Du kannst jedoch auch STRESCCHR(*NONE) verwenden.

    Vorgehensweise meines Test's:
    create table qtemp/testcsv (f1 char(512), f2 char(512))
    insert into qtemp/testcsv
    values ('10.08.2009";"11.09.2009";15.10.2009'
    ,'08:00:01";"09:30:07";"12.45.13')

    CPYTOIMPF FROMFILE(TESTCSV)
    TOSTMF('/Home/Fuerchau/TestCSV')
    MBROPT(*REPLACE)
    STMFCODPAG(1252)
    RCDDLM(*CRLF)
    STRESCCHR(*NONE)
    RMVBLANK(*BOTH)
    FLDDLM(',')

    Ausgabe:
    "10.08.2009";"11.09.2009";15.10.2009","08:00:01";"09:30:07";"12.45.13"

    Länge der Ausgabedatei 72 Zeichen.
    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. cpytoimpf die ...
    By malzusrex in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 14-12-06, 17:20
  2. CPYTOIMPF - Leerzeichen am Ende?
    By mott in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 09-10-06, 11:28
  3. CPYTOIMPF Format
    By Muchi in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 03-08-06, 09:41
  4. CPYTOIMPF Ergebnis nicht lesbar
    By SUBUIS in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 09-05-06, 09:36
  5. CPYTOIMPF und CCSID
    By Muchi in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 21-04-06, 13:54

Berechtigungen

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