freetiger 发表于 2015-2-25 14:10 
感谢大神回复,能正常运行!
我再实际使用中还是没法熟练运用,被这几个符号困扰:',||,"
目的是生成一个字符串放在execute()中运行. 这个字符串是call execute()语句要运行的内容。
换句话说,这个字符串应该是一段可以单独运行的程序。
|| 是将前后两个字符串连接起来形成一个新的字符串.
a1, a2, j 是数据步的变量,因此连接时用的是变量的值。而其他的 x1, x2, 等号,逗号等在call execute() 语句中都做为字符处理。
cats()函数和 || 有同样的功能,而且比较易懂。
- data main;
- array x1_[3,5];
- array x2_[3,5];
- do j=1 to 5;
- do i=1 to 3;
- x1_[i,j]=i+j;
- x2_[i,j]=i*2+j;
- end;
- end;
- do j = 1 to 5;
- a1 = x1_[3,j];
- a2 = x2_[3,j];
- text = cats('%testfunc( x1=',
- a1,
- ', ',
- 'x2=',
- a2,
- ', ',
- 'i=',
- j,
- ')' );
- put j= a1= a2= text=;
- call execute(text);
- * call execute('%testfunc(x1=' || a1 ||", " || 'X2=' || a2 || ", " || 'i=' || j || ')');
- end;
- run;
复制代码更详细的, 可以参考
https://bbs.pinggu.org/thread-2377205-1-1.html