На современном языке (например, python) вы можете сделать что-то вроде
def do_a_thing(foo,bar):
thing = (... do a thing to foo(bar) ...)
return thing
Как можно это сделать (или что-то похожее) в SAS? В моем конкретном приложении я определил несколько функций, и мне нужно сделать одно и то же для всех них, поэтому я подумал, что было бы неплохо иметь функцию, которая принимает функцию в качестве аргумента, а затем выполняет эту функцию к этой функции, а затем примените ее при необходимости. «Очевидное» решение не работает, например, proc fcmp
делает это:
function do_a_thing(foo,bar);
thing = (... do a thing to foo(bar) ...)
return(thing);
endsub;
Сбой, потому что SAS не знает ни о какой функции, называемой foo
, и выдает ошибку.
Я ожидаю, что ответ включает в себя некоторые хитрости макросов, но я нахожу макросистему несколько непрозрачной и не могу понять это. Какой лучший способ сделать это?