Zitat 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