[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2006
    Beiträge
    88

    gleiche Felder innerhalb zweier Datenstukturen kopieren

    Ich möchte gleiche Felder, mit gleichen Namen und Feldgrößen von einer Datenstruktur auf eine ander übertragen. Dies soll aber nicht einzeln sondern mit einem Rutsch geschehen, da es sich um sehr viele Felder handelt. Die Datenstruktur in die ich kopieren will hat aber mehr Felder so das ich das Ganze nicht per MOVEA machen kann.

    Geht das irgendwie?

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.877
    Wenn die Datenstruktur-Unterfelder gleich heißen und mindestens eine der beiden Datenstrukturen qualifiziert ist (anders erhält man eh' keine doppelten Unterfelder) und Du mindestens auf Release V5R4 bist, kannst Du in RPG den OPcode EVAL-CORR verwenden.

    Felder mit gleichem Namen werden übertragen, alle ungleichen Felder bleiben unverändert:

    Code:
     /Free
         Eval-Corr  DS2 = DS1;
     /End-Free
    Birgitta
    Birgitta Hauser

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

  3. #3
    Registriert seit
    Feb 2008
    Beiträge
    8
    Gibt es eigentlich eine Möglichkeit, eine Feldgruppe direkt aus einem Satzformat heraus zu füllen ? Ich habe ein Format mit mehreren unterschiedlichen Feldern und dann 53 Felder mit Wochenumsätzen. Diese 53 Felder möchte ich in einen Array einlesen. habs mit likeds, likerec und overlay versucht, der Compiler lässt mich aber nicht, da wohl das Satzformat nicht überlagert werden darf. Muss dann wohl doch eine neue DS mit den 53 Feldern definieren und dann mit einem Array überlagern. Oder wisst Ihr eine Lösung ???
    Gruß

    Roger

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.877
    Hilft wohl nur überlagerte Datenstruktur oder mit Pointer Handling zu arbeiten, wobei ich allerdings die 1. Variante vorziehen würde.

    Code:
    D  MyDS            DS
    D   MyFileFld1
    D   MyFileFld2
    D   MyFileFld3
    ....
    D   MyFileFld53
    D   MyArr                                     Dim(53) Like(MyFileFld1)
    D                                             Overlay(MyDS)
    
     /Free
         Chain (MyKey1: MyKey2: ... MyKeyN) MyFile;
         If %Found;
            For Index = 1 to 53;
                 Dsply MyArr(Index);
            EndFor;
         EndIf;
     /End-Free
    Birgitta
    Birgitta Hauser

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

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.248
    Und wem der Schreibaufwand zu groß ist, der kann eine DS mit externer Beschreibung definieren und nur den Array-Part anhängen.
    So habe ich das schon in OPMRPG gemacht.
    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. Fehler in pcsws.exe beim kopieren
    By Stefan123 in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 02-02-07, 08:50
  2. STRMF nach PF kopieren???
    By K_Tippi in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 24-01-07, 06:37
  3. FETCH n ROws in einzelne Felder einer DS
    By pedro-zapata in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 11-09-06, 12:34
  4. Gezonte Felder aus Bildschirm-/Druckdateien intern gepackt
    By Xanas in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 13-06-06, 14:38
  5. Kopieren von Daten in verschiedene Felder
    By joscho in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 01-06-05, 10:16

Berechtigungen

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