Kurze Frage zur Macroprogrammierung

Liebe Sasler,
zur Zeit komme ich bei SAS mit einem -diesmal wirklich kleinen- Probelm nicht weiter und finde dazu leider nichts im Netz. Und zwar möchte ich eine Funktion definieren (Gausssche Hypergeometrische Funktion/Reihe) und muss dazu in dem Makro die Gammafunktion aufrufen:

%let F = %eval( gamma(&_x));

Anscheinend kann %eval nur einfachere Rechenoperationen (+,-,/,*,**) und verursacht die Fehlermeldung:
"ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric operand
is required. The condition was: gamma(2)"

Hatte jemand schonmal ein ähnliches Problem und bzw. oder kennt eine Lösung?
Danke vorab und viele Grüße
Alex

%sysfunc

Hallo,

die Makrofunktion %eval nutzt man in der Regel um einfache mathematische Operationen mit Makrovariablen durchzuführen. z.B.

%let F = %eval(&F + 1) ;

Um die Funktionen aus den Datasets, z.B. Gamma, im Makrocode zu nutzen, muss man die Makrofunktion %sysfunc verwenden. Damit ist es möglich fast alle Funktionen auch im Makrocode anzusprechen.

%let F = %sysfunc( gamma(&_x));

Viel Spass
Lutz Ritter