[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    dino is offline [professional_User]
    Registriert seit
    May 2006
    Beiträge
    341

    Satz auf Änderung vergleichen

    Ich möchte Datensätze gleicher Dateien in verschiedenen Bibliotheken auf Unterschiede prüfen. Muss ich etwa jedes Feld vergleichen? In alten RPGII-Zeiten konnte man ein Feld = Satzlänge definieren und so nur einen Vergleich pro Satz durchführen.

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Das geht mit externen Datenstrukturen. Aber Vorsicht: Dadurch werden gepackte Felder dieser Formate als gezonte Felder ins Programm geholt!
    PHP-Code:
    DDS1            E DS                  EXTNAME(Format1)
    DDS2            E DS                  EXTNAME(Format2

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Pikachu Beitrag anzeigen
    Aber Vorsicht: Dadurch werden gepackte Felder dieser Formate als gezonte Felder ins Programm geholt!
    Nein! Dadurch werden nur die Felder so ausgegeben wie sie definiert sind, d.h. gezonte Felder als gezont und gepackte Felder als gepackt.
    Wird ohne externe Datenstrukturen gearbeitet werden gezonte Felder in gepackte Felder konvertiert.
    Gepackte Felder werden nur dann in gezonte Felder konvertiert, wenn diese ohne Definition (Felder werden nur aufgelistet) in internen Datenstrukturen verwendet werden.

    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

  4. #4
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Oh, so war das. Aber dennoch Vorsicht: Durch die Definition einer externen Datenstruktur werden einige Felder unter Umständen nicht mehr als gepackte sondern als gezonte Felder ins Programm geholt. Das ist eine Fehlerquelle, wenn man diese Felder zum Beispiel als Parameterfelder bei Aufrufen anderer Programme nutzt.
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Nein! Dadurch werden nur die Felder so ausgegeben wie sie definiert sind, d.h. gezonte Felder als gezont und gepackte Felder als gepackt.
    Wird ohne externe Datenstrukturen gearbeitet werden gezonte Felder in gepackte Felder konvertiert.
    Gepackte Felder werden nur dann in gezonte Felder konvertiert, wenn diese ohne Definition (Felder werden nur aufgelistet) in internen Datenstrukturen verwendet werden.

    Birgitta

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Wie Birgitta schon sagte:
    Definierst du eine DS aus einer externen Datei werden gepackte Felder auch als solche definiert!
    Dass kannst du im Spool sehr schön durch die Definition des Feldtyps "P" sehen.

    Ein Problem ist hier eher die Definition von "internen" Datenstrukturen die aus DSPF/PRTF resultieren, da diese immer als Zoned definiert werden.

    Durch die Namensgleichheit der Felder zwischen PF/LF und DSPF/PRTF spart man sich ja die Moves, was allerdings wieder dazu führt, dass nun die PF/LF-Felder der internen Strukturen auch als Zoned definiert werden wenn sie nicht explizit als externe Struktur angelegt werden.
    Dies führt dann natürlich bei Parameterübergaben zu den benannten Problemen.
    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

  6. #6
    dino is offline [professional_User]
    Registriert seit
    May 2006
    Beiträge
    341
    Danke für die Info`s.

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Willst Du nur wissen, ob alle Felder gleich sind, oder musst Du wissen welche Felder abweichen?

    Im ersten Fall, definierst Du externe Datenstrukturen, liest die Sätze in die Datenstrukturen ein und vergleichst diese.

    Code:
    FMYFILE01  IF   E           K DISK    ExtFile('MYLIB1/MYFILE')
    F                                     Rename(MYFMT: MYFMT01)    
    FMYFILE02  IF   E           K DISK    ExtFile('MYLIB2/MYFILE')
    F                                     Rename(MYFMT: MYFMT02)    
    
    D DSMYFILE01      DS                   LikeRec(MYFmt01)    
    D DSMYFILE02      DS                   LikeRec(MYFmt02)    
     /Free
        Chain (MyKey1: MyKey2) MyFile01 DSMyFile01;
        Chain (MyKey1: MyKey2) MyFile02 DSMyFile02;
    
        If     %Found(MyFile01) = *On 
          and %Found(MyFile02) = *On
          and DSMyFile01 = DSMyFile02;
          //Sätze gleich
        EndIf;
    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

Similar Threads

  1. Datei von S/36 auf AS/400 holen
    By WeKaSys in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 06-11-06, 17:34
  2. Spooleintrag wird auf HOLD gesetzt
    By Joe in forum NEWSboard Drucker
    Antworten: 7
    Letzter Beitrag: 31-10-06, 15:17
  3. A5 mit Host Print Transform auf HP
    By dirkus in forum NEWSboard Drucker
    Antworten: 4
    Letzter Beitrag: 26-10-06, 17:52
  4. AS400 auf SQL Server
    By DEVJO in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 12-10-06, 18:28
  5. Zeit auf IFS
    By scherm in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 04-10-06, 10:48

Berechtigungen

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