d*******1 发帖数: 293 | 1 我用下面的code, 但是出错,好像是参数类型传递错误
%macro derv(lambda);
%global dl;
%let temp1 = %sysfunc(exp(-&lambda));
%let dl = %sysevalf(10/&lambda + 25*&temp1/(1-&temp1) - 27.21);
%mend derv;
Data;
Lam_1 = 0.1;
%derv(Lam_1);
出错 (我把它改成 %derv(0.1) 就没有问题, 但是dl的值有问题,不知道用的时候,可不可以这样用)
ERROR: A character operand was found in the %EVAL function or %IF condition
where a numeric operand is required.
我这儿需要把Lam_1转换成numeric type吗? 用什么函数可以转化?
另外, 对于Macro parameters, 好像只有输入参数,可以把参数设置成输出参数吗,要不
然,觉得很不方便,要不断使用global v | A*********u 发帖数: 8976 | 2 如果只是计算,为啥一定要用macro呢
我用下面的code, 但是出错,好像是参数类型传递错误
%macro derv(lambda);
%global dl;
%let temp1 = %sysfunc(exp(-&lambda));
%let dl = %sysevalf(10/&lambda + 25*&temp1/(1-&temp1) - 27.21);
%mend derv;
Data;
Lam_1 = 0.1;
%derv(Lam_1);
出错 (我把它改成 %derv(0.1) 就没有问题, 但是dl的值有问题,不知道用的时候,可不
可以这样用)
ERROR: A character operand was found in the %EVAL function or %IF condition
where a numeric operand is required.
我这儿需要把Lam_1转换成numeric type吗? 用什么函数可以转化?
另外, 对于Macro parameters, 好像只有输入参数,可以把参数设置成输出参数吗,要不
【在 d*******1 的大作中提到】 : 我用下面的code, 但是出错,好像是参数类型传递错误 : %macro derv(lambda); : %global dl; : %let temp1 = %sysfunc(exp(-&lambda)); : %let dl = %sysevalf(10/&lambda + 25*&temp1/(1-&temp1) - 27.21); : %mend derv; : Data; : Lam_1 = 0.1; : %derv(Lam_1); : 出错 (我把它改成 %derv(0.1) 就没有问题, 但是dl的值有问题,不知道用的时候,可不可以这样用)
| d*******1 发帖数: 293 | 3 因为很想弄明白macro function 的功能
包括参数传递,以及对local and global 变量的处理 |
|