%let Jun=test;
%let Period=%str(May&Jun);
%put Period resolves to: .
%let Period1=%upcase(%str(May&Jun));
%put Period1 resolves to: &period1;
%let Period3=%nrstr(May&Jun);
%put Period3 resolves to: &period3;
%let Period4=%upcase(%nrstr(May&Jun));
%put Period4 resolves to: &period4;
执行上面宏代码:LOG日志为:
1 options symbolgen;
2 %let Jun=test;
3 %let Period=%str(May&Jun);
SYMBOLGEN: 宏变量 JUN 解析为 test
4 %put Period resolves to: .
SYMBOLGEN: 宏变量 PERIOD 解析为 Maytest
SYMBOLGEN: 上一值中宏应引用的某些字符在显示时未加引用。
Period resolves to: Maytest
5 %let Period1=%upcase(%str(May&Jun));
SYMBOLGEN: 宏变量 JUN 解析为 test
6 %put Period1 resolves to: &period1;
SYMBOLGEN: 宏变量 PERIOD1 解析为 MAYTEST
Period1 resolves to: MAYTEST
7 %let Period3=%nrstr(May&Jun);
8 %put Period3 resolves to: &period3;
SYMBOLGEN: 宏变量 PERIOD3 解析为 May&Jun
SYMBOLGEN: 上一值中宏应引用的某些字符在显示时未加引用。
Period3 resolves to: May&Jun
9 %let Period4=%upcase(%nrstr(May&Jun));
SYMBOLGEN: 宏变量 JUN 解析为 test
10 %put Period4 resolves to: &period4;
SYMBOLGEN: 宏变量 PERIOD4 解析为 MAYtest
Period4 resolves to: MAYtest
请教问题1:%str()函数是在宏编译时候起作用而把&Jun解析了?
问题2:为什么%upcase(%nrstr(May&Jun))的结果为MAYtest?
一直困扰,请懂的人解释一下,谢!



雷达卡



京公网安备 11010802022788号







