各リストに複数のものがある場合、このコードは正しく実行されません。位置パラメータマクロ変数に関するSASエラーを修正する方法
%macro loop(list1, list2);
%let n=%sysfunc(countw(&list1));
%do i=1 %to &n;
%let O_list1 = %scan(&list1, &i, '');
%let O_list2 = %scan(&list2, &i, '');
data taxes;
food=3*&O_List1;
materials = 4*&O_List2
%end;
%mend;
%loop(1, 4);
/* %loop(1 3, 4 6) */
それは、コードが実行されないと、私は理由を把握することができないようにコメントセクションにあるように私がループを作る場合はここで出力は3と16です。ありがとう!
、それは '実行を追加することをお勧めします。あなたのDATAステップを終了する'ステートメントを。 – Quentin
%SCAN()に、リストが一重引用符で区切られていると言いましたので、各リストには1つの項目しかありません。これは、その項目に埋め込まれたスペースによって、マクロが無効なSASコードを生成することを意味します。また、リスト内に複数の項目がある場合、同じ出力データセットを上書きし続けるだけで、マクロの全体的なロジックに欠陥があります。マクロの全体的な目標は何ですか? – Tom
@Tomそれを指摘してくれてありがとう、私は上書きの問題を修正するためにa_&Iを追加しました。私の実際のプログラムでのプログラムの目的は、同時に2つのリストを繰り返し処理することです。このようにして、私は必要なテーブルを手に入れることができます。これを理解したので、作成したテーブルをすべて追加する方法を理解する必要があります。 –