[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2003
    Beiträge
    118

    INFDS für mehrere Dateien als /COPY

    Hallo Forum,

    ich komme im Moment mit einem Problem nicht weiter:

    Wie kann ich die INFDS für Datenbank-Dateien in /COPY-Strecken auslagern und innerhalb eines Programmes bei mehreren Dateien verwenden. Wenn ich den gleichen Datenstrukturnamen bei INFDS mehrmals angebe, dann bricht die Umwandlung ab.

    Kann ich das "irgendwie" mit PREFIX regeln?

    Wie habt ihr dies gelöst?

    Vielen Dank für eure Unterstützung.

    Jo

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... wie wärs mit LIKEDS?
    (wobei man einiges auch mit %bifs machen könnte)

    D*B


    Zitat Zitat von jo400 Beitrag anzeigen
    Hallo Forum,

    ich komme im Moment mit einem Problem nicht weiter:

    Wie kann ich die INFDS für Datenbank-Dateien in /COPY-Strecken auslagern und innerhalb eines Programmes bei mehreren Dateien verwenden. Wenn ich den gleichen Datenstrukturnamen bei INFDS mehrmals angebe, dann bricht die Umwandlung ab.

    Kann ich das "irgendwie" mit PREFIX regeln?

    Wie habt ihr dies gelöst?

    Vielen Dank für eure Unterstützung.

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

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Wie Dieter bereits gesagt hat:
    Eine Referenz-Datenstrukur in einer Copy-Strecke anlegen und dann mit LikeDS(RefStruktur) definieren. Datenstrukturen, die mit LIKEDS definiert wurden sind automatisch qualifiziert, d.h. die Unterfelder müssen mit DSName.UnterFeld angesprochen werden. Damit kann das gleiche Unterfeld mehrfach verwendet werden.

    Eine andere Möglichkeit wäre nur die Unter-Felder in eine Copy-Strecke packen und die Datenstruktur als qualified definieren. (M.E. ist allerdings die 1 Lösung die bessere!):

    PHP-Code:
    D InfDSXX       DS                      LikeDS(RefInfDS)
    D InfDSYY       DS                      LikeDS(RefInfDS)

    D InfDSAA       DS                      Qualified
    D
    /Copy QCPYLESRC,InfDSSubf

    D InfDSBB       DS                      Qualified
    D
    /Copy QCPYLESRC,InfDSSubf
     
    /Free
         Chain 
    (InfDSXX.RRNMyFileXX;
         
    Chain (InfDSBB.RRNMyFileBB;
     /
    End-Free 
    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
    Jan 2003
    Beiträge
    118
    Hallo Birgitta, hallo Dieter,

    vielen Dank für eure Beiträge und dem Hinweis auf LIKEDS. Damit habe ich das Programm schonmal umwandeln können!

    ABER: Eigentlich wollte ich eine Standard-INFDS als /COPY-Strecke erstellen (z.B. FILEINFDS mit den Spezial-Definitionen *FILE, *STATUS, *OPCODE, ...). Diese wollte ich NICHT hinter einer Datei als INFDS definieren, sondern nur dateispezifische DS (z.B. FILEXYZINFDS), die ich "irgendwie" aus der Referenz-INFDS erstelle.

    Wenn ich - wie vorgeschlagen - mit LIKEDS arbeite, dann akzeptiert er die Spezial-Definitionen *FILE, *STATUS,... der Referenz-Datenstruktur nicht, da diese nicht als INFDS bei einer Datei verwendet wurde.

    Habt ihr sonst noch einen Vorschlag?
    Oder wie habt ihr dies gelöst?

    Vielen Dank für weitere Ideen.

    Jo

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Die Positionen für *FILE, *STATUS usw. sind ja bekannt.
    Es bleibt dir also nichts anderes übrig, als diese Felder mit expliziten Namen zu definieren.
    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
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... ob da in einer Copystrecke, die ich nie wieder anfasse, *File oder von Stelle 38 bis Stelle 45 steht, ist mir ziemlich schnurz.
    Wichtig ist da noch im kleingedruckten dafür zu sorgen, dass der Name der deklarierten Struktur in der Copy Strecke nicht mehrfach in einer Quelle vorkommen kann, sonst kriegt der Compiler Husten. Deswegen sollte man diese Musterdeklarationen (ordentliche Programmiersprachen erlauben Type Definitions!!!) alle vom Namen her per Konvention pre oder postfixen (Birgitta fängt den Namen mit Ref an, ich lasse die mit Type enden) und wenn man dann noch alle Deklarationen dieser Art in eine QRPGLEH.TYPES zusammenfasst (analog zu Types.h in C), dann kann da nix mehr passieren. Allerdings sollte man diese Deklarattionen alle als based(dummy) machen, damit da zur Laufzeit kein Overhead entsteht, ach ja und die Pseudo Type declarations macht man dann auch noch qualified.

    D*B

    Zitat Zitat von jo400 Beitrag anzeigen
    Hallo Birgitta, hallo Dieter,

    vielen Dank für eure Beiträge und dem Hinweis auf LIKEDS. Damit habe ich das Programm schonmal umwandeln können!

    ABER: Eigentlich wollte ich eine Standard-INFDS als /COPY-Strecke erstellen (z.B. FILEINFDS mit den Spezial-Definitionen *FILE, *STATUS, *OPCODE, ...). Diese wollte ich NICHT hinter einer Datei als INFDS definieren, sondern nur dateispezifische DS (z.B. FILEXYZINFDS), die ich "irgendwie" aus der Referenz-INFDS erstelle.

    Wenn ich - wie vorgeschlagen - mit LIKEDS arbeite, dann akzeptiert er die Spezial-Definitionen *FILE, *STATUS,... der Referenz-Datenstruktur nicht, da diese nicht als INFDS bei einer Datei verwendet wurde.

    Habt ihr sonst noch einen Vorschlag?
    Oder wie habt ihr dies gelöst?

    Vielen Dank für weitere Ideen.

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

Similar Threads

  1. Defekte Dateien
    By Rincewind in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 23-01-07, 08:49
  2. Dateien aus dem IFS löschen
    By Bobou in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 16-01-07, 10:26
  3. anderer Speicherort für .ws Dateien
    By usafft in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 23-08-06, 11:07
  4. VARPG /COPY Auflösung funktioniert nicht
    By hteufl in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 21-08-06, 13:12
  5. SQL über 168 Dateien
    By mikex01 in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 21-04-06, 16:11

Berechtigungen

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