[NEWSboard IBMi Forum]
Seite 2 von 3 Erste 1 2 3 Letzte
  1. #13
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ad 1: den Zeitpunkt entscheidet allerdings der Programmierer, der Compile kann auch zur Laufzeit erfolgen und in manchen Fällen kann auch generieren, compilieren, aufrufen Sinn machen und wenn man das cached, funzt das auch.

    ad 2: stimmt nicht für exportierte Variablen, deren Adressen lassen sich per API zur Laufzeit ermitteln, wenn man den Export Namen der Variablen kennt.

    @VAHLE: ich habe nur zum Ausdruck gebracht, dass man eben nicht von der konkreten Aufgabenstellung absehen kann und nur präzise Fragen präzise Antworten erwarten lassen können.

    Zitat Zitat von Fuerchau Beitrag anzeigen
    RPG wird kompiliert, PHP eben nicht.

    Zur Laufzeit sind keine Variablennamen mehr bekannt sondern ausschließlich Adressen.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  2. #14
    Registriert seit
    Nov 2002
    Beiträge
    19
    präzise Frage:

    Ist es möglich, und wenn ja, wie, im RPG den Inhalt eines Feldes zu ermitteln, dessen Name erst zur Laufzeit bekannt ist (der Name des Feldes wird aus einer externen Datei ermittelt).

  3. #15
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    wenn man die dafür in Frage kommenden Felder zur Compiletime kennt, könnte man sie mit Schlüsselwort EXPORT kennzeichnen und dann per API Stafette (siehe dazu auch http://bender-dv.de/Sourcen/QRPGLESRC.PROCP4NAME und API Reference) die Adresse ermitteln. Letztlich landet man aber meist bei einer Struktur, die sich auch (und besser) mit einer if elseif Struktur und einer Zuweisung der Variablen an ein festes Feld, das man dann in der SQL Anweisung benutzt, abbilden lässt.
    Das ganze riecht aber förmlich nach überraffiniertem "Design", für RPG ist es meist angemessener ein Leistungsfähiges View Layer anzulegen und für die dann flachen Zugriffe Zugriffsmodule zu generieren und mit denen die Daten zu holen.


    Zitat Zitat von VAHLE Beitrag anzeigen
    präzise Frage:

    Ist es möglich, und wenn ja, wie, im RPG den Inhalt eines Feldes zu ermitteln, dessen Name erst zur Laufzeit bekannt ist (der Name des Feldes wird aus einer externen Datei ermittelt).
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #16
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Aber ob ich nun alle möglichen Variablen exportiere (was genauso zur Compilezeit bekannt sein muss) oder über einen Verteiler die Namen abfrage und ersetze, der Aufwand ist letztlich der selbe und im weitesten Sinne nicht dynamisch.

    Ausserdem kann ich zwar zur Laufzeit die Adresse der exportierten Variablen ermitteln, ich habe allerdings keine dynamische Funktion, den Typ variabel abzufragen und entsprechend auszuwerten.
    Adresse bleibt Adresse.

    Desweiteren musst du ja auch noch die SQL-Syntax berücksichtigen, Strings in Hochkomma, Zahlen ohne, Dezimalpunkt/Komma.

    Also:
    Überlege noch mal dein Design bzw. die Anforderung.
    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. #17
    Registriert seit
    Nov 2002
    Beiträge
    19
    Danke für die Antworten.

    Werde mir morgen dann mal Gedanken darüber machen, wie ich das ganze angehen werde.
    Hinsichtlich "dynamischem Design" werde ich wohl einige Abstriche machen müssen, wie es ausschaut.

    Trotzdem vielen Dank !

    Gruß,
    Olli

  6. #18
    Registriert seit
    Nov 2002
    Beiträge
    19
    Irgendwie kommt mir gerade noch so ein Gedanke in den Sinn...

    Kann ich im RPG einen Speicherauszug erstellen ?
    (wie der formatierte Speicherauszug, den ich mir bei einem Programmabbruch erstellen kann ?)
    Den könnte ich dann ja (wenn er nur als Spool zu erstellen ist) in eine DB-Datei in der QTEMP schaufeln, nach dem Feldnamen durchsuchen und käme so an den Feldinhalt...

    Nur so ein Gedanke... ist ziemlich quer gedacht, weiss ich, aber vielleicht geht das ja...

  7. #19
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dafür gibt es die DUMP-Anweisung.
    Allerdings musst du das Programm mit Debug umwandeln, da sonst die Programmvariablen nicht gedumpt werden.

    Das nächste Problem ist dann allerdings, dass du eine Adresse im Programm aber nicht dynamisch zuweisen kannst.
    Hierzu benötigst du eine Referenzadresse.

    D MyPtr *
    D MyDS DS
    D MyVar 10

    MyPtr = %addr(MyVar);

    Der Dump liefert i.Ü. keine Adressen sondern nur den Namen (falls Debug) und den Inhalt.
    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. #20
    Registriert seit
    Nov 2002
    Beiträge
    19
    das hört sich doch mal gar nicht so schlecht an...
    Nach dem Namen der Variable könnte ich ja suchen (der würde ja in meiner Programmvariable "FeldName" stehen und dann hätte ich den zugehörigen Wert...)

    Werde da smorgen mal versuchen und dann Bericht erstatten. Habe leider im Moment keinen Zugriff auf die Maschine...

  9. #21
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ich verstehe gar nicht, wie du da soviel Aufwand reinstecken kannst.

    Spätetestens bei der nächsten Umwandlung mit vergessenem Debug oder CHGPGM mit entfernen überwachbarer Daten läuft dein Programm nicht mehr.

    Und von der Performance ganz zu schweigen.

    Ist das denn nun ein Hobby von dir oder gibts tatsächlich konkrete Anforderungen ?

    Als Hobby kann ich das noch verstehen, als konkrete Anforderung sollte man das ganz schnell vergessen.
    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. #22
    Registriert seit
    Jan 2001
    Beiträge
    133
    Also ich habe das Thema auch schon mal diskutiert. siehe http://www.newsolutions.de/forum-sys...feldnamen.html
    Jedoch führte auch das damals zu keinem Ergebnis. Ich finde es auch immer recht schade, wenn man am Ende der Diskussion dann nur den Tip bekommt, mal über sein "Konzept dahinter nachzudenken" Wer so ein Problem hat, hat meistens auch eine anspruchsvolle Aufgabe dahinter, da kann sich der geneigte Schreiber sicher sein. Und das Argument mit den anderen Programmiersprachen die das auch nicht oder eben doch können, weil es nur Interpreter Sprachen sind, zieht auch irgendwie nicht. Wat issn mit Delphi und Pascal ??? Die können das und sind ... na ?

    Also Olli ich bin auf Deiner Seite, suche auch noch nach einer Lösung, wenn auch nicht so intensiv, weil ich hab leider wie wir alle ja noch mehr zutun. Im Moment arbeite ich damit, das ich den kompletten SQL String aus einer Datenbank zusammenbaue, in der vorher die Feldnamen und Definitionen abgelegt sind. Man ist aber immer noch bei den Inhalten eingeschränkt und leider kann man nicht nativ mit read und write auf die Daten losgehen, sondern nur mit SQL.

    Wenn Murphy und alle Götter der Programmierung mir hold sind und ich eine Lösung habe, werde ich davon sicher hier zu berichten wissen. Ich bin mir sicher es wird eine Lösung geben, wie auch immer die aussieht.

    Mögen die Bits mit uns sein !

    Thomas

  11. #23
    Registriert seit
    Jan 2006
    Beiträge
    82
    Hallo,

    ich bin auch eurer Meinung und bin auch an der Lösung interessiert, denn:

    GEHT NICHT, GIBTS NICHT

  12. #24
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Wir sind wieder mal an einer Stelle, wo es an einer genauen Beschreibung fehlt, welches Problem eigentlich gelöst werden soll. Hier werden nämlich schon wieder zwei Dinge vermischt.
    @Liebhoff: siehe originärer Thread!
    Zu diesem Thema hier:
    Zu Interpreter Sprachen hat Baldur schon was gesagt, hier sei nur ergänzt, dass hier Flexibilität mit abnehmender Sicherheit erkauft wird: Fehler die zur Compiletime erkannt werden, treten nicht zur Laufzeit auf. Zu Delphi und Pascal sei angemerkt, dass originäres Pascal das keineswegs konnte und sich das auch nicht mit der eigentlichen Sprachphilosophie verträgt. Delphi kann sowas, ähnlich wie Java: dieser Mechanismus nennt sich Reflection und bezieht sich auch nicht auf alles innerhalb einer Klasse, sondern im wesentlichen auf die Exporte. Den Weg das in RPG zu nutzen habe ich in einem früheren Posting beschrieben.
    Zum Design von sowas: auch in Java und Delphi muss man gute Gründe haben das zu nutzen, denn man bekommt nix für lau. Reflection hebelt Typprüfung aus und man kriegt Runtime Fehler (Type missmatch beim upcast), die man sonst garnicht bekommen kann, weil der Compiler einen davon abhält.
    Im Falle von RPG muss man hier noch vorsichtiger sein, weil die RPG Runtime nich typsicher ist; der Compiler prüft zuwenig zur Compiletime und die Runtime weiss bei Pointern nicht auf was sie da zeigt.
    Fazit: Wer unbedingt Reflection benötigt (ja, das gibt es wirklich), der sollte dafür eine Programmiersprache benutzen, die das vernünftig unterstützt. Wer das mit Gewalt (Dump auswerten ist ja wohl ein Scherz?!) in RPG versucht, liegt genauso schief, wie jemand, der eine FIBU in CL schreiben will.

    D*B
    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. Variable Feldnamen
    By Liebhoff in forum IBM i Hauptforum
    Antworten: 20
    Letzter Beitrag: 11-03-08, 09:47
  2. "Environment variable not found"
    By Kampi4 in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 09-10-06, 10:19
  3. Variable Zahlenkonvertieren
    By Xanas in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 28-08-06, 12:21
  4. cl declare variable
    By TARASIK in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-08-06, 10:09
  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
  •