Sas应用之宏变量%eval
定义如下:The %EVAL function evaluates integer arithmetic or logical expressions. %EVAL operates by converting its argument from a character value to a numeric or logical expression. Then, it performs the evaluation. Finally, %EVAL converts the result back to a character value and returns that value.。
一、程序思路 做一个简单的例子,实现1到100相加的结果,通过添加和去掉%eval掌握%eval的用法。
二、程序如下:
%macro a;
%let sum=0;
%do i=1 %to 100 %by 1;
%let sum=&sum+&i;
%put &sum.;
%end;
%mend;
%a;
在该宏中,实现从1到100的相加,每次循环都put出sum的结果;本次结果如下:
没有实现数值计算,而是以字符的形式做了输出;为什么会是这样的呢?原因在于sum=&sum+&i这里没有使用%eval宏函数进行计算。添加后程序为:
%macro a;
%let sum=0;
%do i=1 %to 100 %by 1;
%let sum=%eval(&sum+&i);
%put &sum.;
%end;
%mend;
%a;
结果如下:
1
3
6
10
15
21
28
36
45
55
66
78
91
105
120
136
153
171
190
210
231
253
276
300
325
351
378
406
435
465
496
528
561
595
630
666
703
741
780
820
861
903
946
990
1035
1081
1128
1176
1225
1275
1326
1378
1431
1485
1540
1596
1653
1711
1770
1830
1891
1953
2016
2080
2145
2211
2278
2346
2415
2485
2556
2628
2701
2775
2850
2926
3003
3081
3160
3240
3321
3403
3486
3570
3655
3741
3828
3916
4005
4095
4186
4278
4371
4465
4560
4656
4753
4851
4950
5050
可关注微信号:SAS应用分析