[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Sep 2004
    Beiträge
    28

    CPYFRMSTMF für DESADV-Datei

    Hallo,
    ich erhalte eine EDIFACT-Datei (DESADV), die zur Trennung der einzelnen Segmente kein WRZL enthält.
    Ich benutze CPYFRMSTMF mit ENDLINFMT(*FIXED) um in eine Datenbankdatei zu kopieren.
    Nun möchte ich aber zur besseren Lesbarkeit der Daten beim CPYFRMSTMF gleich einen Satz pro Segment erzeugen.
    Der "Satzbegrenzer " ist das Hochkomma (X"7D").
    Geht das ?

  2. #2
    Registriert seit
    Feb 2006
    Beiträge
    29
    Hallo,

    hast du es schon mal mit dem Befehl CPYFRMIMPF probiert?
    Damit kannst du auch einen sog. Satztrenner angeben.

  3. #3
    Registriert seit
    Sep 2004
    Beiträge
    28
    Hallo Azaron,
    der Tip mit CPYFRMIMPF ist gut, aber ich scheidere bisher mit meinen Versuchen.
    Wie muss ich im Parameter RCDDLM angeben, dass mein Satztrenner das Hochkomma (HEX 7D) ist.
    Weder X'7D' noch ''' helfen mir.

  4. #4
    Registriert seit
    Oct 2006
    Beiträge
    44
    Du verwechselst aber nicht den Parameter RCDDLM mit dem Parameter STRDLM?

    Wir verarbeiten auch EDI-Daten, allerdings hatten wir noch kein Format bei dem eine Zeile mit dem Hochkomma beendet wurde.
    Eine Beispiel vom Aufbau wäre zur Problemlösung sicher hilfreich.

  5. #5
    Registriert seit
    Sep 2004
    Beiträge
    28
    An einem Beispiel kann man das wirklich besser erklären :
    UNB+UNOC:3+4015792000004:14+4314392000002:14+07031 2:1523+00000000000014+++++EANCOM+1'UNH+0000000001+ DESADV:96A:UN:EAN005'BGM+351
    0070312:102'RFF+DQ:2555'DTM+2:20070313:102'NAD+BY+ 4314392963840::9'NAD+DP+4314392000002::9'NAD+SU+40 15792000004::9'CPS+1'LIN+1++44
    2::PCE'LIN+2++4400016501366:EN'QTY+12::PCE'LIN+3++ 4400016505340:EN'QTY+12::PCE'LIN+4++4015792058500: EN'QTY+12::PCE'LIN+5++44000165
    'LIN+6++4400016505524:EN'QTY+12::PCE'LIN+7++440001 6510146:EN'QTY+12::PCE'LIN+8++4400016510214:EN'QTY +12::PCE'LIN+9++4400016510221:
    0++4400016501601:EN'QTY+12::PCE'CNT+2:10'UNT+31+00 00000001'UNH+0000000002+DESADV:96A:UN:EAN005'BGM+351::9+2556+9'DTM+137:2007031
    M+2:20070313:102'NAD+BY+4314392963918::9'NAD+DP+43 14392000002::9'NAD+SU+4015792000004::9'CPS+1'LIN+1 ++4400016500307:EN'QTY+12::PCE
    3:EN'QTY+12::PCE'LIN+3++4400016502035:EN'QTY+12::P CE'LIN+4++4400016502042:EN'QTY+12::PCE'LIN+5++4400 016500314:EN'QTY+12::PCE'LIN+6
    TY+12::PCE'LIN+7++4400016500598:EN'QTY+12::PCE'LIN +8++4400016502141:EN'QTY+12::PCE'LIN+9++4400016502 578:EN'QTY+12::PCE'LIN+10++440
    ::PCE'LIN+11++4015792211035:EN'QTY+12::PCE'LIN+12+ +4015792211028:EN'QTY+12::PCE'LIN+13++401579221109 7:EN'QTY+12::PCE'LIN+14++40157
    PCE'LIN+15++4015792050252:EN'QTY+12::PCE'CNT+2:15' UNT+41+0000000002'UNZ+2+00000000000014'
    ****** DATENENDE ******
    Warum jetzt in der Datei die Smileys stehen , weiß ich nicht.
    Dort steht in der Datei ein Doppelpunkt und ein D !
    Ich möchte die Segmente (UNB, UNH, BGM ...) in je 1 Datensatz haben .
    Das Trennzeichen zwischen den Segmenten ist das Hochkomma.
    Ein Feldtrennzeichen gibt es nicht.

  6. #6
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    Wir verarbeiten auch EDI-Daten, allerdings hatten wir noch kein Format bei dem eine Zeile mit dem Hochkomma beendet wurde.
    Jedes Segment wird bei EDI mit einem Hochkomma beendet. Wahrscheinlich habt Ihr einen Konverter, der das bereits herausfiltert.

    Ich denke auch, dass das weder mit CPYFRMIMPF noch mit CPYFRMSTMF zu lösen ist. Beim CPYFRMIMPF kann man kein Hochkomma als Satzbegrenzer angeben. Man könnte bestenfalls die Textdatei per CPYFRMSTMF als einen langen Datensatz in eine physische Datei kopieren und diesen Satz dann mit SCAN- und SUBST-Befehlen zerlegen und weiterverarbeiten.

    Am besten benutzt Du gleich die entsprechenden IFS-APIs und schreibst Dir ein kleines Programm dafür, das das erledigt. Dann kannst Du Dir den CPYFRMSTMF sparen.

    Gruß,
    KM

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

    da gibt es ein Serviceprogramm INSTREAM auf meiner Open Source Seite, das hat eine Prozedur readLine, die man leicht auf einstellbare Delimiter erweitern könnte.

    mfg

    Dieter Bender

    Zitat Zitat von KM Beitrag anzeigen
    Jedes Segment wird bei EDI mit einem Hochkomma beendet. Wahrscheinlich habt Ihr einen Konverter, der das bereits herausfiltert.

    Ich denke auch, dass das weder mit CPYFRMIMPF noch mit CPYFRMSTMF zu lösen ist. Beim CPYFRMIMPF kann man kein Hochkomma als Satzbegrenzer angeben. Man könnte bestenfalls die Textdatei per CPYFRMSTMF als einen langen Datensatz in eine physische Datei kopieren und diesen Satz dann mit SCAN- und SUBST-Befehlen zerlegen und weiterverarbeiten.

    Am besten benutzt Du gleich die entsprechenden IFS-APIs und schreibst Dir ein kleines Programm dafür, das das erledigt. Dann kannst Du Dir den CPYFRMSTMF sparen.

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

  8. #8
    Registriert seit
    Oct 2006
    Beiträge
    44
    Stimmt, erledigt bei uns wahrscheinlich einer der Konverter. Ein Glück!

Similar Threads

  1. Wert aus CSV Datei
    By mk in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 21-12-06, 08:56
  2. UTF-8 Datei nach PF
    By wrkas400 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 19-12-06, 09:23
  3. kein Konstantes Ergebnis bei CRTDUPOBJ und Datei m.RI
    By deni87991 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 19-10-06, 13:55
  4. Datei aus IFS holen
    By jogisarge in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 15-05-06, 13:47
  5. IFS Datei berechtigungen
    By PGMR in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 15-06-05, 15:37

Berechtigungen

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