次のように、proc iml 内でマクロ do ループを使用したい:
%Let Tab1=FirstTable;
%Let Tab2=SecondTable;
%Let Tab3=ThirdTable;
*&Tab1-3 have been initialised as sas datasets;
proc iml;
* This works;
use &Tab1;
read all into Mat3;
print Mat3;
* This doesn't work;
%Macro Define_mx;
%do i=1 %to 2;
use &Tab&i;
read all into Mat&i ;
%end;
%Mend Define_mx;
%Define_mx;
*The two matrixes have not been initialised;
print Mat1;
print Mat2;
quit;
実際には、50 個のマトリックスを初期化する必要があるため、do ループが必要です。ループが &Tab&i をマクロ変数として認識できない理由がわかりません。また、substr を使用して変数名を連結する通常の (マクロではない) do ループで回避策を試みましたが、どちらも機能しませんでした。ここで何が欠けていますか?