0

SASでこのSQLマクロを実行しています。

%macro calc(table=,cut=,whereclause=);
proc sql;
&table
   select 
        &cut as type format = $40. length = 40
       ,dt
       ,count(prod_nbr) as stat
       ,sum(new) as new
       ,sum(old) as old
       ,sum(retired) as retired
       ,sum(replaced) as replaced
       ,sum(final) as final
       ,sum(redo) as redo

from work.product
where retail_flg = 1
&whereclause
group by 1,2;
quit;
%mend calc;

プログラム内でマクロを約 60 回呼び出し、呼び出した時間の約 80% で動作します。しかし、時々このエラーが発生します: ERROR: All positional parameters must precede keyword parameters

コードを同じ順序で実行すると、エラーは常に同じ行に表示されます。しかし、呼び出しを異なる順序で実行し始めると、最終的に、マクロを呼び出す一見ランダムなコード行でエラーが発生します。これは、(計算テーブルがすでに作成された後)に追いつく呼び出しの1つの例です。

%calc(table = insert into calc, cut = 'Product', whereclause = and brand = 'JNJ' and Prod_type = 'N' and index(prod_nm, 'NEW') > 0);

マクロに位置パラメータがないため、特にこのエラーに混乱しています。エラーを解決できずに、構文エラーやその他の一般的な問題について調査し、トラブルシューティングを行いました。

4

1 に答える 1