0
私のコードに間違いがあります。リストの最初の値を返しますが、最後の値を返します。マイコードコードの誤り、マクロ変数はリストの最初の値を返しますが、最後の値が返されます
%macro r(one, two);
%local cnt num;
%let cnt=0;
%let num=0;
%do %while(%scan(&one,%eval(&cnt+1),%str()) ne %str());
%let cnt = %eval(&cnt+1);
%if %upcase(%scan(&one,&cnt,%str()))=%upcase(&two) %then
%let num=&cnt;
%end;
&num
%mend r;
option mlogic symbolgen;
%put b is at position %r(a b c b, b);
出力は2でなければなりません。しかし、私は誰も私が私の間違いを見つけ出す助けることができます4として出力を取得しています。前もって感謝します。
'while'ループは、一致するとすぐに終了する必要があります。現在はマッチングを続けているので、numの値は2と4の値を2回更新して終了します。 – alvits