2

|で区切られた変数名の文字列を受け取り、それらに対して計算を実行するマクロをプログラムしようとしています (例: ab dc|def)。次のコードを試してみましたが、スキャン関数で奇妙なエラーが発生します:「マクロ関数 %SCAN の引数が少なすぎます。」

SYMBOLGEN「FROM は ab dc|def に解決されます」および「K は 1 に解決されます」ということ&from.を教えてくれ、正しく解決されたので、問題が何であるかわかりません。&k.最初は%str()、マクロの実行時間後まで値をマスクしているため、パラメーターが解決されないのではないかと疑っていました。%unquote(%str(..scan function..))しかし、同じエラーが発生するため、これは当てはまらないようです。

%macro data_mapping_sum(from);
  %let k=1;
  %let temp_ind = "%scan(&from., &k.,"|")";
  %let THIS_FAILS = %str(%'%scan(&from., &k.,"|")%'n); 

  %do %while( (&temp_ind. NE "") );
      %unquote(&THIS_FAILS.) = 999; 
      %let k = %eval(&k. + 1);
      %let temp_ind = "%scan(&from., &k.,"|")";
      %let THIS_FAILS = %str(%'%scan(&from., &k.,"|")%'n);
  %end;

%mend;

data test;
%data_mapping_sum(ab dc|def);
run;
4

2 に答える 2