BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Sachsen
Calcite | Level 5

初めて投稿させて頂きます。SAS 9.4 64bit 日本語を使用しています。
%do %untilで文字列を分割するため、以下のコードを書きましたがエラーが発生します。
分割後の文字列「A-2」を%do %untilの終了条件として評価する際にエラーが発生しているようですが、
回避策はございますでしょうか。ご教示いただけますと幸いです。

 

%let str = A-1|A-2;

%macro test();
  %let i = 1;
  %do %until(%scan(&str, &i, %str(|)) = %str());
    %let sub = %scan(&str, &i, %str(|));
    %put ⊂
    %let i = %eval(&i + 1);
  %end;
%mend;

%test;

ERROR: 数値演算項が必要とされる%EVAL関数または%IF条件に、文字演算項が見つかりました。条件: %scan(&str, &i, |) =
ERROR: %DO %UNTILループの条件%scan(&str, &i, ) = に、無効な値または欠損値が発生しました。マクロの実行を中止します。
ERROR: マクロTESTの実行を中止します。

1 ACCEPTED SOLUTION

Accepted Solutions
amatsu
Obsidian | Level 7

%SCANを%QSCANに変えてみてください。

「A-1」とか「A-2」の「-」の部分が算術演算子だとSASが勘違いしちゃってるんですね。

View solution in original post

2 REPLIES 2
amatsu
Obsidian | Level 7

%SCANを%QSCANに変えてみてください。

「A-1」とか「A-2」の「-」の部分が算術演算子だとSASが勘違いしちゃってるんですね。

Sachsen
Calcite | Level 5
amatsuさま
ご回答ありがとうございます。
%QSCANに変更しましたら、ERRORが消えました。