[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2003
    Beiträge
    163

    Wieder einmal: FTP und CCS

    Hallo zusammen,

    nachdem ich im Forum die entsprechenden Beiträge durchforstet habe, konnte ich das Problem noch nicht lösen:

    Ich erstelle auf der i5 ein Streamfile. Wenn ich das mit DSPLNK ansehe habe ich diesen Inhalt:

    UNA:+.? UNB+UNOC:3+40128780000002:14545053400017 UNH+ME 4711DESADV:96A:UN:EAN0 BMG+351+DES 4711 DTM+11:200708

    Wenn ich diese Datei jetzt per FTP herunterlade sieht sie so aus:

    ᘀ乕㩁⸫‿乕⭂乕䍏㌺㐫㄰㠲㠷〰〰〰㨲㐱㐵〵㌵〴〰㜱舀乕⭈䕍†㜴ㄱ䕄䅓噄䐺㤺䄶唺㩎䅅ぎጀ䵂⭇㔳⬱䕄 ⁓㐠ㄷ1䐏䵔ㄫ㨱〲㜰㠰

    Auf der i5 wird die Datei mit der CCS 37 angelegt, auch wenn ich dem open eine andere CCS mitgebe. Ich habe auch geprüft, ob die Übertragung binär erfolgt und explitit auf ASCII umgeschaltet.

    Bei der Übertragung von Datenbankdateien ist das Ergebnis ok. Die Übertragung von / zu einer anderen i5 ist auch sauber.

    Hat jemand eine Idee, was ich noch machen kann?

    Danke

    Hubert

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Du musst auf dem IFS die CCSID 1252 bzw. *PCASCII verwenden.
    FTP selber macht keine Codewandlung !

    DSPLNK auf der AS/400 zeigt mit Codewandlung an, kann also auch 1252 korrekt darstellen.
    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
    Aug 2003
    Beiträge
    163
    Ich habe es mit der Einstellung beim open versucht, aber ich bekomme immer nur die 37. An den Verzeichnissen selbst kann ich nichts ändern; die Maschine wird von mehreren Ländern genutzt und in Kanada verwaltet.

    Code:
    c                   eval      permiss = S_IRUSR + S_IWUSR +S_IXUSR     
    c                   eval      Codepage = 1252                          
    c                   eval      file = '/home/TEST.dat' + NULL           
    c                   eval      o_flag = O_WRONLY + O_Create             
    c                   eval      fd = open(%trim(file):O_Flag:CodePage)   
    c                   if        fd > 0

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Beim Openflag musst du noch o_codepage angeben sonst wirkt die Codepage nicht (gabs hier schon mal im Forum).
    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
    Aug 2003
    Beiträge
    163
    Danke, das o_codepage wusste ich nicht.

    Jetzt wird ein File mit einer anderen Codepage erstellt, aber nicht die 1252.

    Ich habe jetzt folgendes versucht:

    Die Daten in ein PF geschrieben und mit CPYTOSTMF kopiert. Dann konnte ich das IFS File per FTP herunterladen.
    Danach habe ich die Daten mit dem Programm ins IFS File geschrieben. Beim Herunterladen auf den PC hatte ich wieder Datensalat.

    Ich muss aber direkt ins IFS schreiben, weil beim CPYTOSTMF nach jedem Satz ein LF bzw. CR eingefügt wird. Das darf aber laut Anforderung nicht sein.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Versuch es mit
    CPYTOSTMF ... ENDLINFMT(*FIXED)
    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.207
    PS:
    Hast du den Parameter für die Codepage auch korrekt definiert ?
    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 2003
    Beiträge
    163
    Der Codeschnipsel zum Öffnen incl. Codepage Definition:

    Code:
    d   CodePage      s             10i 0 inz(1252)   
                                                                         
     * Define open attributes                                            
                                                                         
    c                   eval      oflag = O_WRONLY + O_Create +          
    c                               O_TextData + O_TRUNC +               
    c                               O_Codepage                           
                                                                         
     * Define Mode      attributes                                       
                                                                         
    c                   eval      Mode = S_IRWXU + S_IRWXO               
                                                                         
    c                   eval      fd = open(%trim(file):OFlag:           
    c                                        Mode:CodePage)
    Das File hat dann:

    Coded character set ID . . . . . . . . : 5348

    Ich habe auch schon versucht, Codepage mit dem Format "u" oder als Konstante zu definieren: mit dem gleichen Misserfolg.

    CPYTOSTMF ... ENDLINFMT(*FIXED) bringt mich auch nicht weiter, weil dann im STMF durch Einfügen von Blanks alle Zeilen auf die Länge des DB Files gebracht werden.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Codepage ist, glaube ich, nur 5U 0 !
    Prüfe mal die Open-Definition, ob short oder integer definiert ist.
    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

  10. #10
    Registriert seit
    Aug 2003
    Beiträge
    163
    Es ist integer definiert. Trotzdem hab ich mal versuchsweise mit 5U 0 gewandelt; dann gabs einen Laufzeitfehler.

    Außerdem ist mir beim Prüfen der Daten aufgefallen, dass das File mit NULL beginnt und bei jedem write hinten 1 - 2 Stellen weglässt und ebenfalls NULL einfügt. Ist das normal?

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Wie ist die Variable zum Write denn definiert ?
    Wenn du varying verwendest, hat diese ein 2-byte-Längeninformation vorher, und du schreibst dann natürlich diese 2 Byte am Ende zu wenig.

    Verwende als Write-Puffer eine Variable fester Länge, da du die genaue Länge ja sowieso angeben musst.

    5348 ist 1252 mit Euro (ab V5R4):
    http://publib.boulder.ibm.com/infoce...gsccsidref.htm
    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

  12. #12
    Registriert seit
    Aug 2003
    Beiträge
    163
    Danke, die variable Länge wars mit den "verschluckten" Zeichen.

    Und jetzt geht's auch mit dem ftp - trotz CCS 37. Vielleicht hat sich FTP an den NULL's verschluckt.

Similar Threads

  1. Daten perr FTP ins IFS
    By malzusrex in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 05-12-06, 14:38
  2. Ftp put hängt sich auf
    By TARASIK in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 21-11-06, 17:18
  3. FTP
    By KM in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 28-08-06, 14:50
  4. Savf File per FTP
    By wuwu in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 18-08-06, 09:09
  5. FTP von V5R3M0 nach V5R4M0
    By Frank.Sobanek in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 22-06-06, 21:22

Berechtigungen

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