[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2001
    Beiträge
    156

    Prozedur variabel aufrufen

    Hallo
    Ich habe folgendes Problem:
    VisualRPG 6.0 im Free-Format (es könnte auch native RPG-IV sein)

    In einer gemeinsam benutzten Komponente gibt es verschiedene Prozeduren.
    Eine dieser Prozeduren füllt eine Variable mit dem Namen einer Prozedur in derselben Komponente.
    Diese Prozedur soll jetzt aufgerufen werden.
    Wie muss ich das machen ? Irgendwie stehe ich auf dem Schlauch.

    Danke schon mal
    Rolf

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo Rolf,

    das geht mit Prototyp, Procedure Pointer, MI und APIs, auf meiner Freeware Seite gibt es dazu ein Serviceprogramm (PROCP4NAME) plus Beispiel.

    mfg

    Dieter Bender

    Zitat Zitat von rolf
    Hallo
    Ich habe folgendes Problem:
    VisualRPG 6.0 im Free-Format (es könnte auch native RPG-IV sein)

    In einer gemeinsam benutzten Komponente gibt es verschiedene Prozeduren.
    Eine dieser Prozeduren füllt eine Variable mit dem Namen einer Prozedur in derselben Komponente.
    Diese Prozedur soll jetzt aufgerufen werden.
    Wie muss ich das machen ? Irgendwie stehe ich auf dem Schlauch.

    Danke schon mal
    Rolf
    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
    May 2005
    Beiträge
    55
    Zitat Zitat von BenderD
    Hallo Rolf,

    das geht mit Prototyp, Procedure Pointer, MI und APIs, auf meiner Freeware Seite gibt es dazu ein Serviceprogramm (PROCP4NAME) plus Beispiel.

    mfg

    Dieter Bender
    Hallo
    Ich habe mir das Serviceprogramm (PROCP4NAME) von Dieter Bender angeschaut.
    Ist toll wen ich meine Prozeduren dynamisch laden könnte.
    Meine Frage: giebt es auch eine Möglichkeit die parameter einer Procedur
    zu ermitteln.
    PHP-Code:
     D ReflectProc     PR              z   EXTPROC(CallPointer
    Den im Beispiel von Dieter Bender ist der Rückgabewert ja schon bekannt.

    Wünschenswert wäre ein Lösung mit der man verschiedene Proceduren mit
    unterschiedlichen Pareametern aufrufen kann
    PHP-Code:
    /free
     
      ReflectProc
    (Parm1:parm2);
      
    // oder
      
    rueckgabe ReflectProc(Parm1:parm2:parm3);
     
    /
    end-free 
    Geht das irgendwie oder nicht.
    Wenn nein dann erspare ich mir mit dem dynamischen ermitteln von
    Procedurpointern ja nur das einbinden des Serviceprogramms und das
    das einbinden der underschiedlichen Prototypen bleibt.

    mfg Stefan

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Du musst halt deine variablen Prozeduren mit einer einheitlichen Schnittstelle Aufrufen.
    Z.B. übergibst du immer die Referenz auf eine Struktur:

    d MyStruct ds
    d NumParm 5I 0
    d Adrparm * dim(256)

    Mittels AdrParm kannst du dann bis zu 256 Parameter übergeben.
    z.B.:

    NumParm = 2;
    AdrParm(0) = %addr(FieldA);
    AdrParm(1)= %addr(FieldB);
    callp MyDynamicProc(MyStruct);

    In der Prozedur:

    D MyParm1 ds based(AdrParm(1))
    D MyParm2 ds based(AdrParm(2))
    :

    Reflection gibts nur in Java.
    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
    Mar 2002
    Beiträge
    5.287
    @Stefan: da gibt es auch noch QZRUCLSP und die restlichen Infos könnte man sich per API aus den Serviceprogrammen holen - aber 1. ist das nicht praktikabel (irgendwo muss man ja die Rückgabe hintun und irgendwo müssen die Parameter ja her kommen und 2. sehe ich da keinen praktikablen Vorteil.
    Beim dynamischen binden geht es mir um elegantere (und sicherere!!!) Aktivierung und um die Flexibilität Programm at startup time aus einer externen Konfiguration zusammen zu stellen.

    @Baldur: Beim Einsatz von Reflection in Java muss man zwei Fälle unterscheiden: a) dynamischer Aufruf vorhandener Klassen: dabei werden meist Interfaces mit verwendet und die Technik ist in RPG so ähnlich nachbildbar (wenn auch etwas mehr hölzern). b) dynamisches zusammen bauen von Objekten (wie in Hibernate oder Struts verwendet) das geht dann in RPG in der Tat nicht zu bewrkstelligen. Die Haupteinschränkungen sind allerdings fehlendes qualified naming (da bewegt sich ein wenig) und insbesondere fehlende Mehrfachaktivierung, was weit schlimmer ist und zu massiveren Workarounds zwingt.

    mfg

    Dieter Bender
    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. RPG aus Java aufrufen
    By Vicky-B in forum NEWSboard Java
    Antworten: 17
    Letzter Beitrag: 06-05-08, 11:05
  2. ILE RPG aus Stored Procdure aufrufen
    By pfpk0997 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 15-11-06, 09:40
  3. Prozedur, in welchem Modul
    By loeweadolf in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 06-11-06, 15:05
  4. URL aufrufen
    By sarge in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 06-12-04, 08:40
  5. Rückgabe von 2 Werten aus einer Prozedur
    By BUG in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 18-10-04, 13:55

Berechtigungen

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