[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.934
    Hallo,

    SQL kennt keine optionalen Paramter, dafür können Prozeduren und User Defined Functions überladen werden, d.h. die gleiche Prozedur oder Funktion kann mehrfach in der gleichen Bibliothek, jedoch mit unterschiedlicher Parameter-Definition existieren.

    Wenn eine RPG-Prozedur oder Funktion mit optionalen Parametern registiert werden soll, müssen die optionalen Parameter mit OPTIONS(*NOPASS: *OMIT) definiert werden und entsprechend geprüft werden.

    Für jede Parameter-Kombination muss dann die Funktion mit dem gleichen Namen registriert werden. (Es ist NICHT erforderlich für jede Parameter-Kombination eine eigene RPG-Funktion zu erstellen.)

    Für die optionalen Parameter werden beim Aufruf der Funktion als UDF NULL-Pointer übergeben. Deshalb ist die Definition mit *OMIT und die Prüfung der optionalen Parameter auf *NULL erforderlich.

    Die Indikator-Variablen können beim Parameter Style GENERAL WITH NULLS oder SQL wahlweise als eigene Parameter oder als Feldgruppe mit einem Element pro Parameter definiert werden. Die Parameterübergabe wird korrekt gehandelt.

    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

  2. #2
    Registriert seit
    Feb 2003
    Beiträge
    41
    Hallo,
    Vielen Dank für die Tipps, ich habe anscheinend die alten Beiträge falsch verstanden. Allerdings macht mich der Wert von %PARMS beim Aufruf über UDF immer noch stützig. Habe auch gehört, dass beim Aufruf von CGI auch irgendwas mit der Anzahl der Parameter nicht stimmt. Bug oder Feature?

    Noch mal vielen Dank
    Roman

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.934
    Zitat Zitat von roko Beitrag anzeigen
    Hallo,
    Vielen Dank für die Tipps, ich habe anscheinend die alten Beiträge falsch verstanden. Allerdings macht mich der Wert von %PARMS beim Aufruf über UDF immer noch stützig. Habe auch gehört, dass beim Aufruf von CGI auch irgendwas mit der Anzahl der Parameter nicht stimmt. Bug oder Feature?

    Noch mal vielen Dank
    Roman
    Bei SQL lässt sich die Geschichte mit %PARMS zumindest so erklären, dass SQL einen Wrapper um die eigentliche Funktion bildet, d.h. ein C-Service-Programm, in dem die eigentliche Funktion aufgerufen wird. Bedingt durch die unterschiedlichen Parameter-Styles werden eine Reihe von zusätzlichen Parametern definiert und ggf. als Null-Pointer an die RPG-Funktion übergeben. Da die Anzahl der übergebenen Parameter mit der normalerweise in der RPG-Funktion empfangenen Parameter nichtmehr übereinstimmt, wird um weitere/zusätzliche Verwirrung zu vermeiden, %PARMS auf -1 gesetzt.

    Deshalb ist es auch erforderlich die optionalen Parameter mit Options(*NoPass: *Omit) zu definieren und auf NULL-Pointer zu prüfen.

    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, 10:49
  2. UDF nicht verwendbar
    By Peder in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 06-12-06, 09:15
  3. Serviceprogramm QC3CTX???
    By jo400 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 17-11-06, 14:21
  4. udf ohne ergebniss
    By ILEMax in forum NEWSboard Programmierung
    Antworten: 25
    Letzter Beitrag: 18-09-06, 14:39
  5. SQL UDF Prob mit leeren Feldern
    By HACHIMAN in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 22-05-06, 10:48

Berechtigungen

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