[NEWSboard IBMi Forum]
  1. #1
    cicero22 Besucher/Guest

    verschiedene Satzformate in Datei?

    Hallo *ALL!

    Ein weiteres Mal in voller Hoffnung folgende Frage:

    Wie möchten gerne eine Schnittstellen Datei (Output) erzeugen, die ca. 5-10 verschiedene Satzaufbauten enthält. Header, 4-7 verschiedene Datenformate und einen Trailer-Satz. Alle Datensätze haben natürlich wie es sich gehört verschiedene Satzaufbauten.
    Die EndDatei ist dann eine ASCII Datei, welche ich z.B. mit CPYTOPCD auf das QDLS ausgegeben wird.

    Was schweben Euch für Möglichkeiten im Kopf herum?

    D*A*N*K*E

    dirk

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    727
    Das hört sich ganz nach einer Schnittstelle einer Sendedatei für einen Spediteur an (z.B. transoflex).

    Also ich habe das fogendermaßen gelöst.

    - Datei mit einem Feld Länge 128 String.
    - In RPG z.B. für jedes Satzformat eine Datenstruktur
    - Datenstruktur mit Datenbankfeldern aus der Anwendung füllen
    - MOVE Datenstruktur in das 128 stellige Feld (im Bsp. TOFSET)

    Code:
         I*---------- DFU-SÄTZE -----------------------------------* 
         IKOPF       IDS                                             
         I                                        1   20$SART        
         I                                        3  110$KDNNR       
         I                                       12  170$DATLF       
         I                                       18  190$NDLK        
         I                                       20  20 $EDIS        
         I                                       21  260$REFNR       
         I                                       21  26 $REFNA       
         ISATZ11     IDS                                             
         I                                        1  26 $KOPF1       
         I                                       27  27 $KZNAM       
         I                                       28 117 $ENAM        
         I                                       28  57 $ENAM1       
         I                                       58  87 $ENAM2       
         I                                       88 117 $ENAM3       
         I                                      118 128 $RES1  
         ISATZ12     IDS                                      
         I                                        1  26 $KOPF2
         I                                       27  56 $EATN 
         I                                       57  86 $ESTR 
         I                                       87  90 $RES2 
         I                                       91  91 $RES3 
         I                                       92  94 $ELND 
         I                                       95  99 $EPLZ 
         I                                      100 124 $EORT 
         I                                      125 127 $RES4 
         I                                      128 128 $RES5 
    
    ... Routine pro Lieferschein-Satz aufrufen
    
         C*-----------------------------------------
         C*             Bearbeiten Datenpool 
         C*-----------------------------------------
         C           $SATZ     BEGSR                
         C*-----------------------------------------
         C                     CLEARKOPF            
         C                     CLEARSATZ11          
         C                     CLEARSATZ12          
                 
    .... hier Felder versorgen
    
         C*                                            
         C                     MOVE '11'      $SART    
         C                     MOVE KOPF      $KOPF1   
         C                     ADD  1         $SATZZ   
         C                     MOVE SATZ11    TOFSET   
         C                     WRITETOFDUS0            
         C*                                            
         C                     MOVE '12'      $SART    
         C                     MOVE KOPF      $KOPF2   
         C                     ADD  1         $SATZZ   
         C                     MOVE SATZ12    TOFSET   
         C                     WRITETOFDUS0            
         C*                                            
         C                     ENDSR
    Sven

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Die Satzformate können auch als PF-Datei per DDS erstellt werden und dann als externe Struktur im RPG übernommen werden.
    Vorteil: Nicht so viel Tipparbeit, Fehler/Änderungen in der Feldlänge können durch Änderung der PF und Umwandlung des PGM's erreicht werden.
    Mir ist alleine die Rechnerei schon zu viel und fehlerbehaftet, ausserdem lassen sich die Strukturen auch mehrfach wieder verwenden.
    Die Reserve zum Auffüllen braucht auch nicht definiert zu werden wenn man die Struktur mit MOVEL(P) überträgt.
    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
    cicero22 Besucher/Guest

    verschiedene Satzformate in Datei?

    Hallo Fuerchau!

    Du meinst externe Datenstruktur aus Datei heraus, oder?

    D.h. für jede Satzart eine eigene physische Datei erstellen und diese im Programm als externe Datenstruktur definieren?

    danke
    dirk

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.928

    Externe Datenstrukturen

    Hallo,

    solange man sich unter RPGIII befunden hat war die Lösung eine physische Datei pro Satz-Format zu definieren die beste Möglichkeit.
    Die Dateien werden als externe Datenstrukturen in das Programm eingebunden. Je nach Satz-Art wird der Satz in die entsprechende Datenstruktur gefüllt.

    Unter RPGIV würde ich dies beibehalten. Aus dem einfachen Grund, dass die externen Datenstrukturen nur einmalig vorhanden sind. Bei Änderungen muss nur die Datei geändert und die Module/Programme neu erstellt werden.

    Nur so als Anmerkung:
    In RPGIV braucht man bei internen Datenstrukturen nicht mehr die Von-/Bis-Werte anzugeben. Die Länge der einzelnen Felder genügt. (Die ganze Rechnerei entfällt somit!)

    Des weiteren sollte man sich in RPGIV soweit möglich von allen MOVE-Befehlen trennen.
    MOVE wird im RPGIV-Free Format nicht unterstützt.
    EVAL hat die gleiche Funktionalität wie MOVEL(P).

    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

  6. #6
    Registriert seit
    Jun 2001
    Beiträge
    727
    Zum Thema externe Datenstrukturen :
    Man kann auch mit einem Elefanten eine Mücke erschlagen.
    Wenn, wie im gegebenen Bsp, die Satzstrukturen nur in einem Schnittstellen-Programm verwendet werden sollen, erscheint mir der Aufwand zur Anlage von ext. DS einfach zuviel.

    Zum Thema MOVE und Längenangaben in DS :
    Dem muß ich mich anschließen, das lässt sich in RPGIV eleganter lösen.

    Sollte halt nur schnell gehen und als Anregung dienen.
    Das Programm ist ja auch mehr als 5 Jahre alt.

    Sven

Similar Threads

  1. Wert aus CSV Datei
    By mk in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 21-12-06, 08:56
  2. Excel Datei mit RPG und POI/HSSF in A4
    By haertl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 30-05-06, 13:36
  3. Datei aus IFS holen
    By jogisarge in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 15-05-06, 13:47
  4. IFS Datei berechtigungen
    By PGMR in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 15-06-05, 15:37
  5. Verschiedene Datumsformate in RPG
    By TobiasHe in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 30-09-04, 11:52

Berechtigungen

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