ユーザー定義モジュール内から SAS システムの proc IML 内で、ベクトルの名前を引数として取得することにより、ベクトル内のデータにアクセスできるようにしたいと考えています。
たとえば、以下のコードでは、「test」というモジュールが 2 つの文字列「x_vec1」と「x_vec2」を作成しますが、これら 2 つのベクトルの内容は出力せず、むしろそれらの名前を出力します (submit ブロックは同じ結果を生成すると思います)。
この概念は、マクロ内で IML を呼び出すことにより、マクロを使用して非常に簡単に実現できますが、コードを「クリーン」に保つために、純粋に IML で実行したいと考えています。IML は統計作業に優れていますが、これ以上のものが必要です。実行時に関数内で解決できるマクロ変数と同様の概念を使用して、コードを短くする必要があります。
proc iml;
start test(ep);
str = concat("x_",ep);
print str;
finish;
x_vec1 = J(10,1,34);
x_vec2 = J(10,1,67);
run test("vec1");
run test("vec2");
quit;