以下の記事をご覧ください。
「%IF条件」で「IN」を使う。
上の記事では、システムオプション「minoperator」 と 「mindelimiter」を指定すると、
「%IF条件」で「IN」が使えるようになると紹介しました。
もうひとつ別の書き方として、以下のようにも書けます。
%let MVAR1=1; %macro TEST / minoperator mindelimiter=',' ; %if &MVAR1 in (1,2) %then %put NOTE: マクロ変数 MVAR1には 1 か 2 が設定されています; %mend; %TEST; |
- マクロ定義に直接このオプションを指定すると、そのマクロでのみオプションが有効になります
- システムオプション「minoperator」「mindelimiter」の設定よりも優先される
- 「minoperator」 でINが使えるようになります
- 「IN」の代わりに「#」でもOK( %if &MVAR1 # (1,2) %then ... )
- 「mindelimiter」 には値を区切る時の区切り文字(シングルバイト1文字)を指定
- 「% & ' " ( ) ;」といったマクロ等で意味を持ちそうな区切り文字は設定できません
- 区切り文字はシングルクォーテーションで囲む必要がある(ダブルクォーテーションではダメ)
📝注意
- 以下で紹介したIF/WHEREのINで使えるコロンは、ここでは使用できません
- 検索文字に「マクロ機能が誤認識を起こす文字」が含まれる場合、以下記事のようなクォート処理を忘れずに
- マクロ言語入門5:クォート処理【%STR関数】
- マクロ言語入門6:クォート処理【%BQUOTE関数】
- ただし「区切り文字」自体をINの後の検索文字に含めたい場合、何故かクォート処理が効かないので注意。例えば区切り文字が「,」で「%if &MVAR1 in (%str(1,2)) 」と書いても、「1,2」ではなく「1」か「2」として検索されちゃいます
0 件のコメント:
コメントを投稿