[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Da würde ich dir einfach CPYTOIMPF bzw. CPYFRMIMPF empfehlen.
    Die Struktur der Daten definierst du in einer eigenen SRCPF.
    Der anschließende CPY... ist im übrigen sehr schnell.

    Warum das Rad immer neu erfinden.
    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

  2. #2
    Registriert seit
    Jan 2001
    Beiträge
    133
    Das ginge natürlich und daran habe ich auch gedacht. Dabei habe ich aber leider keine Möglichkeit, die eingelesenen Daten noch aufzubereiten. So soll z.B. ein Datum das als NUM(6) definiert ist (080121) gleich als "richtiges" Datumsfeld (*ISO) abgelegt werden. Diese Konvertierung bekomme ich so nicht hin, in RPG schon. Ein weiteres Beispiel wäre die Aufbereitung von Character Feldern. TRIM, Austausch von unerwünschten Inhalten, Korrektur Groß/Kleinschreibung e.t.c. Da brauche ich ein Programm mit Intelligenz. Für Daten die nicht aufbereitet werden müssen, werde ich aber Deine Überlegung sicher noch in Betracht ziehen.

    Thomas

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Da hilft dir dann tatsächlich nur das Arbeiten mit einer SQLDA, die du dynamisch mit %ALLOC anlegen und verwalten kannst.

    Deinen Insert kannst du dann so codieren:

    Insert into MyFile (F1, F2, ...) values(?, ?, ...)

    den du mit Prepare vorbereitest.

    Je "?" benötigst du einen SQLVAR-Eintrag innerhalb der SQLDA mit Feldtyp und Speicheradresse (Pointer).

    Per "Execute MyStmt using : MySQLDA" kannst du dann den Insert sehr schnell durchführen.

    Die Details zur SQLDA kannst du dem SQL-Programmierhandbuch entnehmen, ein Beispiel der Definition findest du in der Lib QSYSINC (falls installiert).
    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

  4. #4
    Registriert seit
    Jan 2006
    Beiträge
    82
    Hallo zusammen,

    ich hab gehört, dass es ab V5R4 möglich sein soll, Variable Feldnamen zu benutzen.
    Gefunden habe ich bisher leider nichts.
    Weiß jmd. von euch etwas darüber?

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ich kann mir nicht im entferntesten vorstellen, wie man mit variablen Feldnamen in ILERPG umgehen soll.

    Das kann allenfalls Java und vielleicht noch VisualBasic.
    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
    Jan 2006
    Beiträge
    82
    und PHP, C++, C#, Delphi, ML, ...
    Also warum nicht auch RPG???

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Hierzu müsste man klären, was du mit "variablen Feldnamen" überhaupt meinst.

    Nicht alle Variablen, die sich so nennen, sind tatsächlich Variablen.

    Meistens wird dies mit Auflistungen (Collections, Maps) gelöst, die halt mit einem Key und einer Klasse (eben der Variablen) gefüllt werden.

    Echte variable Feldnamen gibt es da tatsächlich doch nicht, dazu müsste es eine DIM-Anweisung geben, die dieses unterstützt.
    Eine solche kenne ich allerdings nicht.

    Wenn ausserdem eine Sprache objektorientiert ist (und ILERPG ist es nicht) wird häufig über Klassen der Datenaustausch zwischen Funktionen realisiert, die Namen spielen dann tatsächlich keine Rolle mehr.

    Was hindert dich daran, eine Array zu erstellen, die aus 2 Elementen (Name und Adresse) besteht ?
    Du kannst dann per Lookup nach dem Namen suchen und hast dann die Adresse dazu.

    Per %alloc kannst du Speicher anlegen (entspricht weitestgehende dem NEW-Operator, allerdings ohne Konstruktoren), und die Adresse mit einem Namen in der Tabelle speichern.

    Ich denke nicht, dass RPG diese Vorgänge irgendwann automatisieren wird.
    Dann sollte man wirklich lieber zu C++ wechseln (mit den Nachteilen der nun fehlenden RPG-Funktionalität).
    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

  8. #8
    Registriert seit
    Jan 2006
    Beiträge
    82
    Beispiel:
    Ich habe ein Feld in einer Tabelle, nennen wir es VERTRAGSNUMMER. Dort steht z.B. eine 1 drin.
    Nun habe ich eine Variable, nennen wir Sie varVertragsNr.

    Schreibe ich nun:
    varVertragsNr = VERTRAGSNUMMER ;
    steht der String VERTRAGSNUMMER in der Variable.
    Spreche ich varVertragsNr wie z.B. in anderen Sprachen mit @varVertragsNr an, erhalte ich nun den Wert 1, also den Wert aus dem Feld, welches ich vorher der Variable zugewiesen habe.

    Vllt. weißt du nun was ich meine !?

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dazu muss allerdings VERTRAGSNUMMER als Variable ja auch irgendwo definiert worden sein.
    Im Prinzip ist das wie ein Pointer oder eine C++-Referenzierung.

    Solche Sprachkonstrukte sind mitunter nicht zu empfehlen, da ich ja die Variable varVertragsNr auch ohne @ ansprechen kann.
    Vernünftigerweise sollte die Sprache
    varVertragsNr = @VERTRAGSNUMMER
    verlangen, damit ich weiß, dass eben die Adresse verlangt wird und es somit nicht zu Verwirrungen kommen kann (doppelte Verwendungsart).
    Bei Scriptsprachen besteht da auch häufig das Problem.

    In RPG sähe das dann so aus:

    D PtrvarVertragsNr S *
    D varVertragsNrDS DS based(PtrvarVertragsNr)
    D varVertragsNr 10

    C PtrvarVertragsNr = %addr(VERTRAGSNUMMER)

    varVertragsNr verweist nun auf VERTRAGSNUMMER.
    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

  10. #10
    Registriert seit
    Jan 2006
    Beiträge
    82
    So ganz ist es das noch nicht was ich suche. Also ich habe eine Tabelle ( also ein physiches Objekt ) in der ich Informationen über eine zu erstellende Tabelle vorhalte. Ein Programm liest nun diese Daten und erzeugt daraus ein Create Table Befehl und setzt diesen ab.
    Ein weiteres Programm liest nun wie auch im ersten Text von "Liebhoff" beschrieben eine CSV-Datei ein modifiziert die Daten so wie in der Tabelle mit den Feldinformationen beschrieben und schreibt diese in die mit Create Tabel erstellte Tabelle. Um dies zu tun, setzt das Programm im Moment jedesmal ein Insert into ab.
    Schön wäre, wenn man im RPG sagen könnte, FELD1 in der neuen Tabelle = erster Abschnitt aus CSV, FELD2 in der neuen Tabelle = zweiter Abschnitt aus CSV und danach native ein WRITE ausführen könnte. Problem hierbei ist natürlich, das die Tabelle in die die Daten geschrieben werden soll immer eine andere ist, also nicht in den F-Bestimmungen definiert werden kann.
    Vllt. wird das Problem nun deutlich !?

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dein Problem ist mit schon klar, aber für eine performante Lösung kommst du um die Verwendung einer SQLDA einfach nicht herum (siehe oben bei SQLVAR).
    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. Variable Ettiketenlänge
    By rguenzel in forum NEWSboard Drucker
    Antworten: 5
    Letzter Beitrag: 18-01-07, 13:38
  2. STRPCCMD mit einer Variable steuern
    By stoerfang in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 28-11-06, 14:32
  3. "Environment variable not found"
    By Kampi4 in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 09-10-06, 10:19
  4. Variable Zahlenkonvertieren
    By Xanas in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 28-08-06, 12:21
  5. String mit HexInhalt muss als Hex-Wert in Variable
    By cheffe1008 in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 16-05-06, 07:45

Berechtigungen

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