
Zitat von
Robi
Hi *all
wenn ich einen Programmnamen zur Laufzeit erst zusammenbaue, und trotzdem mit callb arbeite, geht das mit
eval call = %Paddr(variable)
callb call parm ...
Was muß ich machen um eine Procedur aufzurufen
eval prc = %paddr(variable)
eval wert = prc(x:y:z)
so geht es leider nicht
geht das überhaubt
Danke Robi
Hallo Robi,
wie sieht den Dein Prototyp aus?
In dem folgenden Beispiel gibt es 3 Prozeduren (Wochentag auf Deutsch, Englisch, Französisch). Jede dieser Prozeduren hat einen eigenen Prototypen.
Um diese Prozeduren variabel aufrufen zu können, musst Du einen zusätzlichen Prototypen generieren mit dem Schlüssel-Wort ExtProc und einer Variablen für den Procedure Pointer.
Der Aufruf erfolgt dann mit diesem Prototypen.
PHP-Code:
D DayWeekPP PR 10A varying extproc(MyProcPtr)
D DayNum 3U 0 const
Der Aufruf sieht dann wie folgt aus:
PHP-Code:
D MyProcPtr S * ProcPtr
D DayDeutsch C %PAddr('DAYWEEKD')
*---------------------------------------------------------
/Free
Select;
when MyFld = 'F';
MyProcPtr = %PAddr('DAYWEEKF');
when MyFld = 'E';
MyProcPtr = %PAddr('DAYWEEKE');
other;
MyProcPtr = DayDeutsch;
EndSL;
Ergebnis = DayWeekPP(MyParm);
/End-Free
Birgitta
Bookmarks