[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.199

    Dynamischer Call per Prototype

    Hallo zusammen,

    im Nicht-Fully-Free RPG konnte ich Programme ja aufrufen, indem ich den Programmnamen beim Call als Variable mitgegeben habe.

    Ich würde so etwas gerne im fully free machen. Da brauche ich aber einen Prototyp. Kann ich den auch irgendwie variabel gestalten?

    Die unterschiedlichen Programme, die ich aufrufen möchte, haben selbstverständlich alle die gleiche Parameterliste.

    Ein Aufruf per QCMDEXC hilft mir wahrscheinlich nicht, da ich dann ja keine Rückgaben aus der Parameterliste empfangen könnte.

    Bisher habe ich das Problem immer umschifft, indem ich ein Nicht-Fully-Free Programm als Adapter in meiner Call-Kette drin hatte. Das finde ich aber nicht sehr elegant.

    Gruß, Dieter

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Das geht da genauso:

    EXTPGM{(name)}
    The EXTPGM keyword indicates that the prototype represents a dynamic call to a program.
    The parameter specifies the external name of the program whose prototype is being defined. The name
    can be a character constant or a character variable.

    Somit kannst du zur Laufzeit beliebige Programme aufrufen, die dieselben Parameter haben.
    Parameter werden allerdings immer per reference übergeben. Wenn du einen Parameter als const definierst, hindert das das aufrufende Programm nicht, es zu ändern (wenn es ohne DCL-PI definiert ist).

    Allerdings entscheidet die Variablendeklaration des Rufers und des Gerufenen, wie der Inhalt zu interpretieren ist.
    D.h. wenn der Rufer char(10), der Gerufene char(20) hat, kann er 20 Zeichen verarbeiten, auch wenn er Schrott enthält.
    Umgedreht, der Rufer char(20), der Gerufene char(10), kommt der nur an 10 Stellen dran.
    Aber das war sschon immer so, und sollte eben durch DCL-PR/DCL-PI weitgehend vermieden werden können.

    Du kannst zusätzlich auch options(*omit:*nopass) zulassen, um die Parameter variabel zu gestalten.

    Ein sauberer Programmierstil ist das allerdings nicht.

    Wenn du die Variable änderst, ändert sich auch der interne Programmpointer beim nächsten Call. Allerdings verhindert dies nicht, dass das Programm im Speicher verbleibt.
    Beim nächsten Aufruf des vorherigen Programmes kann es dann zu Unschönheiten kommen, da ggf. der Initial-Aufruf (automatische Open von Dateien, Variablen initialisierungen) nicht erfolgt, was zu weiteren Problemen führen kann.

    Im Gegensatz zu RPGIV gibts den Free-Befehl nicht mehr, der ein Programm tatsächlich entlädt und beim nächsten Aufruf wieder neu aufruft und somit der Init durchlaufen wird.

    Im DCL-PR für Prozeduren kann man übrigens Prozedur-Pointer Variablen statt Namen verwenden und somit auch dies dynamisieren.
    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
    Jan 2012
    Beiträge
    1.199
    Vielen Dank, Baldur!
    Genau die Erklärung mit dem EXTPGM habe ich gesucht!. Ich war mir irgendwie sicher, dass es gehen würde, habe die Syntax aber nicht mehr gefunden. Ich war dann verunsichert, als ChatGpt mir sagte, dass das nicht gehen würde.

    Aber da dachte ich: Bevor ich der KI glaube, frage ich lieber mal im Forum nach!

    Herzlichen Dank!

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    ChatGPT weiß eben doch nicht alles. Ich habe mal nachfragen lassen, aber ich bin da vollkommen unbekannt;-). Das muss jetzt kein Nachteil sein.
    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.365
    Zitat Zitat von Fuerchau Beitrag anzeigen
    ChatGPT weiß eben doch nicht alles. Ich habe mal nachfragen lassen, aber ich bin da vollkommen unbekannt;-). Das muss jetzt kein Nachteil sein.
    ... mir macht das Angst, dass KI die Menschen überholt. Aber nicht weil das Blech schlauer wird.

    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/

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Nicht nur das Überholen, sondern das sich ständig auf KI verlassende Verhalten.
    Das Einzige was mich an KI freut, ist das autonome Fahren.
    Dann hören auch die ständigen Streiks auf, da man die Fahrer sowieso nicht mehr braucht.

    Ein Kabarettist erzählt letztens:

    Als in Deutschland die Todesstrafe abgeschafft werden sollte, streikten die Henker.
    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. Call Programm vs. Service-PGM
    By malzusrex in forum NEWSboard Programmierung
    Antworten: 17
    Letzter Beitrag: 15-11-13, 11:21
  2. Prototype
    By Xanas in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 12-08-09, 08:42
  3. Procedure bzw. Prototype aus *SRVPGM
    By France in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 28-03-03, 09:25
  4. 4Call - Die erfolgreiche Call-Center Lösung
    By Kirsten Steer in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 17-01-03, 11:57
  5. Remote Function Call -> SAP
    By areichelt in forum NEWSboard SAP
    Antworten: 2
    Letzter Beitrag: 24-02-02, 16:44

Berechtigungen

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