-
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
-
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
-
 Zitat von roko
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
Similar Threads
-
By Nils_V in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 18-07-16, 10:49
-
By Peder in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 06-12-06, 09:15
-
By jo400 in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 17-11-06, 14:21
-
By ILEMax in forum NEWSboard Programmierung
Antworten: 25
Letzter Beitrag: 18-09-06, 14:39
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks