%macro test(k);
%if &k le 0 %then %put < 0 ;
%else %put > 0;
%mend test;
%test(-5);
%test(3.1);
Но %test(-3.1);
будет генерировать ошибкумакро ошибка: Персонаж операнд был найден в функции% EVAL или% IF условие
ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric operand is required. The condition was:
&k le 0
Я понятия не имею, почему это простое сравнение значения приведет к ошибке. Сначала я думаю, что это потому, что .
. Но ввод 3.1 кажется, все идет хорошо.
'% sysevalf (& k le 0)' решает это. Но почему '-5' не нужно' sysevalf'? – Lovnlust
Код в порядке. Я не вижу причин, чтобы он не работал. Возможно, перезапустите приложение и повторите попытку – NEOmen
Согласитесь с NEOmen, код в порядке –