[NEWSboard IBMi Forum]
Seite 1 von 3 1 2 ... Letzte
  1. #1
    Registriert seit
    May 2006
    Beiträge
    195

    Variable Feldname

    Hallo *all ,

    Problem:
    ich habe eine Datei (PF) mit 40 Feldern.
    in einer anderen Datei habe ich die Reihenfolge der Felder der ersten Datei festgelegt.
    Beispiel:
    Datei 1
    Feld1|Feld2|Feld3|Feld4|
    abc | 123 | efgd |9876|

    Datei2
    1|Feld4
    2|Feld2
    3|Feld1
    4|Feld3

    Jetzt müssen die Felder der Datei 1 als ein String in der hinterlegten Reihenfolge ausgegeben werden.

    Wie kann ich das ohne 40 WHEN oder ELSIF Anweisungen lösen
    Ev. mit mehrdimensionalen Array? Aber der muss auch erst gefüllt werden.

    Gibt es ev. eval String =%Feldname('Feld4')

    Fehlt euch AllOBJ-USER'n andere Möglichkeit?

  2. #2
    Registriert seit
    May 2006
    Beiträge
    195
    Guten Morgen *all

    Erste Lösung:
    1) mittels DSPFFD die Beschreibung der DATEI1 in eine Qtemp-Datei erstellen.
    2) Über das Feldname kann Startposition und die Lenge ermittelt werden (über die Qtemp-Datei)
    3) DATEI1 als ein String betrachten.

    Ist das zu Kompliziert? kann das noch einfacher und weniger Quell-Code gelöst werden ?

  3. #3
    Registriert seit
    Apr 2005
    Beiträge
    385
    Sind die Felder alle gleich lang? Wenn ja, kannst du ein Array über die Datei legen und diesesn dann sortieren.

  4. #4
    Registriert seit
    May 2006
    Beiträge
    195
    Hallo,
    alle Felder haben unterschiedliche Namen und Größen.

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von svit Beitrag anzeigen
    Guten Morgen *all

    Erste Lösung:
    1) mittels DSPFFD die Beschreibung der DATEI1 in eine Qtemp-Datei erstellen.
    2) Über das Feldname kann Startposition und die Lenge ermittelt werden (über die Qtemp-Datei)
    3) DATEI1 als ein String betrachten.

    Ist das zu Kompliziert? kann das noch einfacher und weniger Quell-Code gelöst werden ?
    Anstatt eine temporäre Datei zu erstellen solltest Du die benötigten Informationen (mit SQL) direkt aus der Catalog View SYSCOLUMNS in der Bibliothek QSYS2 auslesen.

    Basierend auf den ausgelesenen Informationen könntest Du ein Dynamisches SQL SELECT Statement aufbereiten, das die Feld-Inhalte konvertiert und als String aufbereitet. Über einen Cursor kann dann dieses SELECT-Statement verarbeitet 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

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    SQL ist hier wirklich die einzige Lösung für dieses Variabilität.
    Woher kommt denn so eine blöde Aufgabenstellung?
    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

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Zitat Zitat von Fuerchau Beitrag anzeigen
    SQL ist hier wirklich die einzige Lösung für dieses Variabilität.
    Woher kommt denn so eine blöde Aufgabenstellung?
    ... lass mich raten: vom Ausbilder!!!
    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
    May 2006
    Beiträge
    195
    ne,

    ich muss eine PF in XML mappen.
    Die PF hat 120 Felder.
    Über die PF müssen 5 verschiedene XML Dateien erstellt werden.
    Das ganze soll in der Nacht laufen.

    na, was sagt ihr jetzt zu dem bösen Ausbilder.

  9. #9
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Nur so nebenbei:
    Ab 7.1 kann man das Ergebnis eines ganzes Selects mit allen Joins usw. als XML ausgeben lassen.
    lg Andreas

  10. #10
    Registriert seit
    Jan 2007
    Beiträge
    1.002
    Kleine simple Frage:

    Wieso erstellst Du dir nicht die gewünschte Datei als physische Datei mit der gewünschten Feldreihenfolge und kopierst die erste Datei mittels CPYF und *map/*drop rüber?

    Manchmal kann die Lösung so einfach sein.
    kf

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    @Andreas
    Diese Standards passen dann selten zu den gewünschten Schnittstellen.

    @SVIT
    Dann denkst du viel zu kompliziert!
    Die Reihenfolge der Datenfelder spielt bei XML nur eine untergeordnete Rolle, darum brauchst du dich eigentlich nicht zu kümmern.
    Felder in XML werden nämlich über ihre
    a) Attributbnamen
    oder
    b) Knotennamen
    referiert.

    Sollt du die Inhalte z.B. als Attribut übergeben so ist es Egal ob du

    Code:
    < Satz Att1="A" Att2="B" >
    oder


    Code:
    < Satz Att2="B" Att1="A" >
    ausgibts.
    Das Selbe gilt auch für Strukturen:

    Code:
    < Satz >
    
    < F1 > Wert1 < /F1 >
    < F2 > Wert2 < /F2 >
    
    oder


    Code:
    < Satz >
    
    < F2 > Wert2 < /F2 >
    < F1 > Wert1 < /F1 >
    
    ausgibst.
    Kümmere dich also gar nicht um die Reihenfolge sondern nur um das korrekte XML-Format.
    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

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wer sagt denn, dass man mit SQL kein XML ausgeben kann bzw. erst V7R1 benötigt?

    Code:
    select
     
    '< satz > att1="' concat char(F1) 
    concat '" att2="' concat char(F2) 
    concat '" < /satz >'
     
    from 
    ....
    Dabei ist es nun unerheblich ob per Knoten oder Attribute ausgegeben werden soll.

    Das Ganze in einen QM-Query stellen.
    Mit STRQMQRY in eine Ausgabedatei und per CPYTOSTMF ins IFS und fertig ist die XML.

    Benötigt man nochden XML-Header so lässt sich dieser
    a) in einer Datei konstant ablegen und ebenso per CPYTOSTMF ausgeben
    b) per "Select ... union all ..." auch hier einbinden.
    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. STRPCCMD mit einer Variable steuern
    By stoerfang in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 28-11-06, 14:32
  2. Variable Zahlenkonvertieren
    By Xanas in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 28-08-06, 12:21
  3. cl declare variable
    By TARASIK in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-08-06, 10:09
  4. String mit HexInhalt muss als Hex-Wert in Variable
    By cheffe1008 in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 16-05-06, 07:45
  5. Variable zuweisung
    By steven_r in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-05-06, 11:01

Berechtigungen

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