-
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.
-
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
Similar Threads
-
By Nils_V in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 18-07-16, 09:49
-
By Peder in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 06-12-06, 08:15
-
By Jump4738 in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 06-10-06, 15:08
-
By GraueEminenz in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 18-07-06, 09:05
-
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
-
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