[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das Problem ist da eher wohl, dass du die Position des Parameters "Specific Name" feststellen musst.

    Die Frage ist eher, sind tatsächlich die Anzahl Paramter unterschiedlich oder nur die Ausprägung.

    Bei variablen Parametern musst du Pseudo-Variablen definieren und in Abhängigkeit der Funktion die Adressen der Parameter umsetzen:

    d MyInterface pi
    d P1 1
    D P2 1
    :
    :

    d P$FirmaPtr *
    D P$Firma 3 based(P$FirmaPtr)

    P$FirmaPtr = %addr(P1);

    Allerdings würde ich die Lösung einfacher gestalten:

    Je Funktion ein Aufruf einer Service-Routine, die wiederum die tatsächlich Funktion mit konkreten Parametern (ggf. castings) aufruft.

    Alles andere versteht ja fast keiner.
    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
    Aug 2001
    Beiträge
    2.928
    Hallo Peder,

    beim Parameter-Style General with NULL werden alle im Prototypen/Procedure Interface angegebene Parameter übergeben plus für jeden Parameter einen zusätzlichen NULL-Indicator. Aus diesem Grund werden ALLE in der Prozedur definierten Parameter übergeben. Für die nicht übergebenen Parameter wird ein NULL-Pointer übergeben.

    Aus diesem Grund musst Du Deine optionalen Parameter im Prototypen mit Options(*NoPass: *Omit) definiert werden. (In Deiner gegenwärtigen Parameter-Definition ist kein optionaler Parameter definiert, was auch mit ein Grund sein kann, warum %Parms keinen korrekten Wert liefert). Ebenfalls solltest Du bei Parameter-Style General with NULL eine Feldgruppe mit 5I 0 und sovielen Elementen wie Parameter übergeben werden können als letzten Parameter im Prototypen einfügen.

    Ob die optionalen Parameter übergeben sind oder nicht, kannst Du dann über %Addr(Param) abfragen.
    Wenn %Addr(Param) = *NULL, wurde der Parameter nicht übergeben. Alternativ kannst Du den NULL-Indikator für den entsprechenden Parameter prüfen. (< 0 entspricht NULL-Wert)

    Probleme könnten auch die Parameter-Felder mit 2B 0 bereiten, da SQL keinen entsprechenden Datentypen kennt. Sollten keine Probleme auftreten ist zuminest eine explizite oder implizite Typenkonvertierung erforderlich.

    Werden RPG-Funktionen als UDFs registriert, sollte darauf geachtet werden, das keine Typen-Konvertierung notwendig ist.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. Antworten: 11
    Letzter Beitrag: 18-07-16, 09:49
  2. UDF nicht verwendbar
    By Peder in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 06-12-06, 08:15
  3. Barcode in externe PRTF
    By Jump4738 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 06-10-06, 15:08
  4. Externe Prozeduren/Bindeverzeichnisse
    By GraueEminenz in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 18-07-06, 09:05
  5. SQL UDF Prob mit leeren Feldern
    By HACHIMAN in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 22-05-06, 09:48

Berechtigungen

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