[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2002
    Beiträge
    1.121

    Felder über Namen aus einer Tabelle ansprechen

    Hallo Liebes Forum,

    ist folgendes möglich:

    Ich habe eine Datei mit dem Satzformat Datei1F. Da gibt es dann die Felder: FELD1, FELD2, FELD3, usw.
    Nun lese ich mir in einer Tabelle die Feldnamen der Datei ein. Gibt es nun eine Möglichkeit, die felder über die Tabelle anzusprechen?

    so in etwa:
    f(1) = 'FELD1'
    f(2) = 'FELD2'

    Read Datei1

    Eval Kundenname = f(1)
    anstelle von Eval Kundenname = FELD1

    ich hoffe ich habe mich verständlich rüber gebracht

    Gruß
    Ronald

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nunja, das Thema hatten wir in ähnlicher Version schon mal, da gings um DSPF-Felder.
    Namen werden durch den Compiler bereits in Adressen aufgelöst, so dass die Namen nicht mehr zur Verfügung stehen.
    Desweiteren legt der Compiler auch die Ausprägung eines Feldes fest, so dass der entsprechende Move/Eval/Add usw. mit dem richtigen Typ umgeht.

    Wenn du F(1) mit dem entsprechenden Inhalt füllst dann geht das so.

    Die andere Variante ist SQL und die Verwendung einer SQLDA mit einer Tabelle von Strukturen mit SQL-Type, Längeninfo und Adresse eines Puffers.

    Aber auch hier hilft dir der EVAL dann nicht weiter, da du schnell Pufferüberschreibungen und Laufzeitfehler bekommst.

    Für sowas ist eher Java der richtige Kandidat, selbst mit C++ gibts da etwas Schwierigkeiten.
    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

  3. #3
    Registriert seit
    May 2002
    Beiträge
    1.121
    Okay, das Thema mid den DSPF habe ich am Rnade verfolgt.
    Dann werde ich mir wohl mit einer Kopierorgie weiter helfen. Ich dachte ich bekomme auf dieser Art es hin, das ich aus eine PF eine Export-File hin bekomme, der in der 1.Zeile die Feldnamen hat, und dann halt pro Satz eine Zeile, wo die Feldinhalte dann mit Semikolon getrennt sind. Da mein Aufbereiten der Kopfzeile funktioniert, werde ich halt die Daten dan mit COPYTOIMPF ins IFS kopieren und mit nen bissel hin und her kopieren die Kopfzeile davor setzen. Ich dachte ich kann das in eine Programm erledigen.
    Danke trozdem
    Ronald

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Der CPYTOIMPF kann ja auch Daten anhängen MBROPT(*ADD).
    Du brauchst also per Programm nur die Kopfzeile erstellen, den Rest machst du wie bisher.
    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

  5. #5
    Registriert seit
    May 2002
    Beiträge
    1.121
    Ja klar,
    manchmal sieht man den wald vor Bäumen nicht!!!!!!


    Danke

    Ronald

  6. #6
    Registriert seit
    Jan 2008
    Beiträge
    122
    Zitat Zitat von malzusrex Beitrag anzeigen
    Ja klar,
    manchmal sieht man den wald vor Bäumen nicht!!!!!!


    Danke

    Ronald
    hallo ronald: der einfachste weg um beliebige Stellen eines datensatzes unabhängig von seinen felddefinitionen anzusprechen ist die datei als programminterne zu verarbeiten (z.b. über feldgruppe)

  7. #7
    Registriert seit
    Jul 2001
    Beiträge
    2.646
    Zitat Zitat von malzusrex Beitrag anzeigen
    Ja klar,
    manchmal sieht man den wald vor Bäumen nicht!!!!!!
    Man denkt einfach zu scharf nach, das kann störend sein. Übrigens kann das gute alte Net.Data das schön, relativ relativ referenzieren auf Variablennamen, bis zum bitteren Verwirrtsein.

    $A = "TEST"
    $B = "123"
    $TEST123 ="hallo"

    fragt man nun $($(A)$(B)) ab, erhält man "hallo".
    Nur das Debuggen ist etwas haarig <g>

    -h

  8. #8
    Registriert seit
    Nov 2006
    Beiträge
    102

    Selektiv kopieren

    Hallo,
    ich habe vor Jahren mal einige Artikel über eine Sammlung von nützlichen Serviceprogrammen (RPG-Toolkit) für NEWSolutions übersetzt.
    Mit einigen der darin enthaltenen Funktionen habe ich einen Command und ein RPG-Programm gebastelt, mit dem man flexibel in CSV und ähnliche Formate kopieren kann (mit Feldauswahl, zusätzlichen Kopf- und Fußzeilen und mit Spaltenüberschriften wahlweise aus Feldnamen, COLHDG oder Beschreibungstext).
    Bei Bedarf kann ich es zur Verfügung stellen.
    Grüße
    Mathias Spateneder

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    @Holger
    Bei interpretativen Sprachen ist sowas leicht möglich, neben NET.DATA gehöhren da auch noch PHP, Java, REXX u.v.a.m. dazu.
    RPG ist nun mal im weitesten Sinn Maschinencode und da wird quasi nix mehr interpretiert.
    In .NET (VB.NET, C#, J#) sowie VB6 oder Java gibts dann allgemeine Variablen vom Typ Object/Variant, die nun mal alles beinhalten können.
    Hinzu wird noch mit Collections und Array's (und Ableitungen) gearbeitet, die eben über einen Index als Nummer oder Schlüssel bearbeitet werden.
    Dadurch kann ich eben beliebige Listen führen (sortiert, verkettet oder sonstwas), die eben meine Variablen dynamisieren.
    Sogar für C++ stehen entsprechende Klassen (MFC, ATL, STL, usw.) zur Verfügung, um solche Dinge abzubilden.
    Aber nicht umsonst kennt man da auch das Problem der "Memory-Leaks", was mit den Garbage-Collectoren versucht wird zu minimieren (beheben geht nicht).

    Wer das in ILERPG machen will, bricht sich garantiert sämtliche Knochen, da allein die Sprache eben keine Objekte oder Klassen unterstützt.
    Spätestens beim FileIO (auch beim embedded SQL) wirds dann wieder tragisch, wenn man sein komplexes Speichermodell wieder auflösen muss.
    Selbst mit CLI ist das nicht so ganz einfach.

    Nicht umsonst verwendet man bei allen Interpretersprachen jede Menge Standardklassen, die einem eben diese Basisarbeit abnehmen.
    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. Antworten: 11
    Letzter Beitrag: 18-07-16, 09:49
  2. Records innerhalb Tabelle duplizieren
    By mama in forum IBM i Hauptforum
    Antworten: 12
    Letzter Beitrag: 27-10-06, 08:14
  3. SQL Alternative Namen
    By andreas.lundschien in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 27-09-06, 10:56
  4. FETCH n ROws in einzelne Felder einer DS
    By pedro-zapata in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 11-09-06, 12:34
  5. Beschränkung auf Anzahl Felder in Tabelle????
    By KB in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 07-09-01, 10:56

Berechtigungen

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